Может ли MySQL использовать индекс для того, где ... в запросе?

StackOverflow https://stackoverflow.com/questions/4757928

Вопрос

В настоящее время у нас есть запрос в нашем приложении, как это:

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) - В зависимости от вашего распределения данных!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top