Отрицательные запросы не попадают в индекс
Мисс
select account from user where id not in (1,2,3);
удар
select account from user where id in (4,5,6);
Нечеткий запрос с префиксом не попадает в индекс
Мисс
select account from user where name like '%lufei'
удар
select account from user where name like 'lu%fei%'
Рекомендуется рассмотреть возможность использования полнотекстового индексационного инструмента, такого как Lucene для замены частых нечетких запросов.
Различие данных не очевидна, и индексация не рекомендуется
Для неуникальных полей, таких как «пол» с большим количеством повторяющихся повторяющихся значений, также нет особого смысла увеличивать индекс. Можно использовать такие поля, как уникальные номера счетов.
Меньшие и более простые типы данных предлагают индексы
Меньшие и более простые типы данных обычно занимают меньше места на диске и в памяти и быстрее обрабатываются.Например, целочисленные данные требуют меньше затрат на обработку, чем обработка символов, поскольку сравнение строк является более сложным, а обработка занимает очень много времени.
старайтесь избегать нуля
Поля индекса должны быть указаны как NOT NULL. Столбцы с нулевыми значениями сложно оптимизировать для запросов, поскольку они усложняют индексы, статистику индексов и операции сравнения, и их следует заменять 0 или специальными значениями, или нулевым символом.
Расчет индекса не может попасть на поле
索引列不能参与计算,尽量保持列“干净”。比如,FROM_UNIXTIME(create_time) = '2016-06-06' 就不能命中索引。 Мисс
select account from user where FROM_UNIXTIME(create_time) = CURDATE();
удар
select account from user where create_time = FROM_UNIXTIME(CURDATE());
таблица индекс соединения таблиц
Поля, которые используются для ограничений запроса на объединение нескольких таблиц в соединении между таблицами, должны быть проиндексированы, а типы полей двух соединяемых таблиц должны быть одинаковыми, иначе индекс не будет достигнут.
Приведение типа поля не попадает в индекс
Мисс
select account from user where phone = 1341111111
удар
select account from user where phone = '1341111111'
Если вы знаете, что это рекорд, используйте лимит
select account from user where phone = '1341111111' limit 1
Может повысить эффективность, позволить базе данных остановить движение курсора.
Крайний левый матч
Принцип соответствия крайнего левого префикса. MySQL всегда будет сопоставляться справа, пока не встретит запрос диапазона (>, 3 и d = 4, каждый узел будет обращаться к a, b и c последовательно, но не может ударить д. (очень просто: индексные попадания могут быть только случаями равенства, а не совпадениями диапазона)
личный блог
Woohoo.C code.live/Бертон здесь/иди…