Может ли MYSQL использовать индекс для запроса WHERE ... IN? - PullRequest
2 голосов
/ 21 января 2011

У нас в данный момент есть запрос в нашем приложении:

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 использовать новый индекс так же, как старый? Если ответ «это зависит», от чего это зависит? Должны ли мы сохранить старый на случай, если он не сможет?

1 Ответ

1 голос
/ 21 января 2011

иногда .... до тех пор, пока нет условия диапазона:

http://dev.mysql.com/doc/refman/5.5/en/index-merge-optimization.html

вам может быть лучше с (text, category_id) - в зависимости от вашего распределения данных!

...