Будет ли индексирование столбца электронной почты базы данных mysql ускорять результаты поиска?

У меня есть большая база данных mySQL, с которой постоянно выполняется оператор SELECT, ищущий уникальный адрес электронной почты. Ускорит ли индексирование столбца электронной почты возвращаемый результат? Есть ли какие-то конкретные преимущества и недостатки при индексации такого столбца?

Спасибо!

-1

Решение

Преимущества:

  1. SELECT ... FROM table WHERE email = '[email protected]'; Да.
  2. SELECT ... FROM table WHERE email LIKE '[email protected]'; Да.
  3. SELECT ... FROM table WHERE email LIKE 'foo@%'; Да.
  4. SELECT ... FROM table WHERE email LIKE '%@bar.com'; Нет.

Строковые индексы совпадают слева направо, вы можете подстановочный знак конец строки и по-прежнему использовать индекс, но не начало.

Недостатки:

Примечание. Это не причины избегать размещения индексов на необходимых столбцах, но избегать ненужной индексации всего.

  • Каждый раз, когда вставляется строка, необходимо выполнить еще один расчет.
  • Индексы занимают место на диске и в памяти.
  • Строковые индексы имеют длину, например. они учитывают только первые X байтов. По умолчанию это по всей длине колонны что может создать нагрузку на ваш процессор, если вы постоянно рассчитываете индексы для больших строковых столбцов.
4

Другие решения

Предполагая, что столбец электронной почты имеет тип VARCHAR, который ограничен некоторым разумным количеством, было бы неплохо попробовать проиндексировать его на резервном сервере, а затем протестировать его на вашем живом сервере для метрик. Вы должны быть в состоянии ясно видеть выгоду.

Недостатки могут проявиться, если вы постоянно ВСТАВЛЯЕТЕ / ОБНОВЛЯЕТЕ / УДАЛЯЕТЕ, так как индекс должен обновляться при любом типе изменения данных (т. Е. При поддержании индекса вы будете испытывать некоторое затруднение). Хотя, кажется, это было бы незначительным, если вы читаете больше, чем пишете. Выполнение операций чтения, как правило, ускоряется быстрее, чем операции записи замедляются.

Также увеличивается использование дискового пространства, но это не является большой проблемой в эту новую эпоху постоянно расширяющихся устройств хранения данных.

1

«Уникальный» индекс ускорит поиск во много раз и гарантирует, что все значения в таблице уникальны.
Во всяком случае, посмотрите на EXPLAIN заявление, чтобы понять, если запрос может быть оптимизирован.

0

Я ответил на несколько вопросов, связанных с вашим. Я даю вам несколько ссылок по теме:

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

Вы можете взглянуть на это:

0
По вопросам рекламы [email protected]