Подтвердить что ты не робот

Показатель Varchar делает разницу в производительности?

Есть ли индекс в столбце varchar, чтобы запрос выполнялся медленнее? Я могу сделать это int. и мне не нужно делать сравнение LIKE%.

4b9b3361

Ответ 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)