#mysql #indexing #composite-index
#mysql #индексирование #составной индекс
Вопрос:
У меня есть таблица «test» с двумя полями, field1 и field2, и составной индекс, созданный field1_field2 (field1, field2). вот sql: выберите * из test force index(field1_field2), где field1 > 100, а field2 = 2 ограничивают 200
и это выполняется не очень хорошо. Я объяснил это и обнаружил, что в индексном запросе используется только условие field1, условие field2 было проигнорировано….
Я хочу знать, почему, и мне нужен идеальный ответ
есть много данных с field1 > 100 и много данных с field2 = 2
Комментарии:
1. Попробуйте поменять местами столбцы вашего индекса на
(field2, field1)
.2. Кроме того, прочтите здесь .
Ответ №1:
Для этого запроса вам нужно INDEX(field2, field1)
, в таком порядке. Поместите =
столбцы первыми в индекс. Как только вы нажмете «диапазон» (например, >
), это последняя часть индекса, которая будет использоваться.