У меня есть большая база данных mySQL, с которой постоянно выполняется оператор SELECT, ищущий уникальный адрес электронной почты. Ускорит ли индексирование столбца электронной почты возвращаемый результат? Есть ли какие-то конкретные преимущества и недостатки при индексации такого столбца?
Спасибо!
SELECT ... FROM table WHERE email = '[email protected]';
Да.SELECT ... FROM table WHERE email LIKE '[email protected]';
Да.SELECT ... FROM table WHERE email LIKE 'foo@%';
Да.SELECT ... FROM table WHERE email LIKE '%@bar.com';
Нет.Строковые индексы совпадают слева направо, вы можете подстановочный знак конец строки и по-прежнему использовать индекс, но не начало.
Примечание. Это не причины избегать размещения индексов на необходимых столбцах, но избегать ненужной индексации всего.
Предполагая, что столбец электронной почты имеет тип VARCHAR, который ограничен некоторым разумным количеством, было бы неплохо попробовать проиндексировать его на резервном сервере, а затем протестировать его на вашем живом сервере для метрик. Вы должны быть в состоянии ясно видеть выгоду.
Недостатки могут проявиться, если вы постоянно ВСТАВЛЯЕТЕ / ОБНОВЛЯЕТЕ / УДАЛЯЕТЕ, так как индекс должен обновляться при любом типе изменения данных (т. Е. При поддержании индекса вы будете испытывать некоторое затруднение). Хотя, кажется, это было бы незначительным, если вы читаете больше, чем пишете. Выполнение операций чтения, как правило, ускоряется быстрее, чем операции записи замедляются.
Также увеличивается использование дискового пространства, но это не является большой проблемой в эту новую эпоху постоянно расширяющихся устройств хранения данных.
«Уникальный» индекс ускорит поиск во много раз и гарантирует, что все значения в таблице уникальны.
Во всяком случае, посмотрите на EXPLAIN заявление, чтобы понять, если запрос может быть оптимизирован.
Я ответил на несколько вопросов, связанных с вашим. Я даю вам несколько ссылок по теме:
Изюминка: если вы часто выполняете поиск по столбцу, рекомендуется определить индекс для этого столбца (может быть, даже необходимо). Как упоминает Дагон в своем комментарии, индексы занимают место на вашем жестком диске … но я думаю, что это справедливая цена.
Вы можете взглянуть на это:
Вы можете посмотреть на этот вопрос и его ответы если вы хотите узнать немного больше о регулярных выражениях.