Как использовать составной индекс в запросе диапазона в mysql

#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) , в таком порядке. Поместите = столбцы первыми в индекс. Как только вы нажмете «диапазон» (например, > ), это последняя часть индекса, которая будет использоваться.

Вот поваренная книга по индексации .