Может ли MySQL использовать индекс для того, где ... в запросе?
-
16-10-2019 - |
Вопрос
В настоящее время у нас есть запрос в нашем приложении, как это:
SELECT * FROM combos WHERE text = '[text]'
Мы ставим category_id
колонка на combos
, и запрос изменится на это:
SELECT * FROM combos WHERE category_id in ([c1],[c2],[...]) AND text = '[text]'
На данный момент есть указатель combos(text)
. Анкет Мы думаем о том, чтобы снять его и надевать combos(category_id, text)
. Анкет Сможет ли MySQL использовать новый индекс, как и старый? Если ответ «это зависит», от чего он зависит? Должны ли мы сохранить старый на случай, если это не может?
Решение
Иногда .... до тех пор, пока нет условия диапазона:
http://dev.mysql.com/doc/refman/5.5/en/index-merge-optimization.html
Вам может быть лучше с (text, category_id)
- В зависимости от вашего распределения данных!
Не связан с StackOverflow