Есть ли индекс в столбце varchar, чтобы запрос выполнялся медленнее? Я могу сделать это int. и мне не нужно делать сравнение LIKE%.
Показатель Varchar делает разницу в производительности?
Ответ 1
Есть ли индекс в столбце varchar, чтобы запрос выполнялся медленнее?
Нет, это не так.
Если оптимизатор решит использовать индекс, запрос будет работать быстрее. INSERT
s/UPDATE
s/DELETE
в этой таблице будет медленнее, но этого недостаточно, чтобы заметить.
Мне не нужно делать сравнение LIKE%
Помните, что используя:
LIKE '%whatever%'
... будет использовать не индекс, но следующее:
LIKE 'whatever%'
Ключ подстановочный знак левой стороны строки означает, что индекс в столбце нельзя использовать.
Также знайте, что MySQL ограничивает объем пространства, выделенного для индексов - они могут быть длиной до 1000 байтов для MyISAM (767 байт для InnoDB).
Ответ 2
Если вы можете заменить столбец varchar на целое число (что, по моему мнению, является вашим намеком), тогда индекс, включающий целочисленный столбец, будет работать лучше, чем столбец varchar, по нескольким причинам.
- Размер индекса будет меньше и будет содержать меньше пейджинга.
- Сравнение целых чисел намного лучше, чем varchar.
Ответ 3
Индексирование не делает запрос медленнее, размер базы данных просто увеличивается, поэтому продолжайте и попробуйте.
Вы можете повысить производительность при извлечении строк, но это зависит от ваших данных, ваших запросов.
Ответ 4
Вы не будете делать ваши запросы медленнее, индексируя. Если вы можете сделать столбец типом int, я бы рекомендовал сделать так, чтобы большинство RDBMS могли искать int быстрее, чем varchars
Ответ 5
Есть проблемы с производительностью, когда речь идет о вставках. Я могу точно сказать, что вставка в большую таблицу с индексом по столбцу varchar может быть очень медленной. (до 50x)