Интервал скорости ВЫБОРА SQL по сравнению с varchar

Я нахожусь в процессе составления таблицы, и это заставило меня задаться вопросом.

Если я храню, говорю автомобили, который имеет делание (fx BMW, ect Audi.), будет он иметь любое значение на скорости запроса, если я сохраню делание как интервал или varchar.

Так

SELECT * FROM table WHERE make = 5 AND ...;

Быстрее/медленнее, чем

SELECT * FROM table WHERE make = 'audi' AND ...;

или скорость будет более или менее тем же?

100
задан googletorp 27 February 2010 в 10:02
поделиться

6 ответов

Сравнение Int выполняется быстрее, чем сравнение varchar, из-за того простого факта, что int занимают гораздо меньше места, чем varchars.

Это верно как для неиндексированного, так и для индексированного доступа. Самый быстрый способ - это индексированный столбец типа int.


Как я вижу, вы отметили вопрос postgreql, возможно, вас заинтересует использование пространства для разных типов дат:

93
ответ дан 24 November 2019 в 04:53
поделиться

Это будет немного быстрее, если использовать int вместо varchar. Более важным для скорости является наличие индекса в поле, которое запрос может использовать для поиска записей.

Есть еще одна причина использовать int - нормализовать базу данных. Вместо того чтобы хранить в таблице тысячи раз текст Mercedes-Benz, вы должны сохранить его идентификатор, а название бренда - один раз в отдельной таблице.

18
ответ дан 24 November 2019 в 04:53
поделиться

Индекс или нет, int равно намного быстрее (чем длиннее varchar, тем медленнее он работает).

Другая причина: индекс для поля varchar будет намного больше, чем для int. Для больших таблиц это может означать сотни мегабайт (и тысячи страниц). Это значительно ухудшает производительность, поскольку для чтения одного только индекса требуется много операций чтения с диска.

6
ответ дан 24 November 2019 в 04:53
поделиться

Обычно int будет быстрее. Чем длиннее varchar, тем медленнее он работает

4
ответ дан 24 November 2019 в 04:53
поделиться

Подсказка: Если возможные значения для поля make будут никогда (или редко) меняться, вы можете использовать ENUM в качестве компромисса. Он сочетает в себе хорошую скорость и удобочитаемость.

3
ответ дан 24 November 2019 в 04:53
поделиться

Если вы включите индексирование на любом полей, будет быстрее. Что касается вашего вопроса, я думаю, что int быстрее, чем varchar .

1
ответ дан 24 November 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: