Сколько индексов будет фактически использоваться? - PullRequest
2 голосов
/ 27 мая 2010

Я пишу страницу, которая выполняет очень простые поисковые запросы, в результате чего получается что-то вроде:

SELECT * FROM my_table WHERE A in (a1, a2, a3) AND B in (b1, b2) AND C in (c1, c2, c3, c4) AND

И так для переменного числа столбцов, обычно ~ 5. Если я создам отдельный индекс для каждого столбца (один для A, один для B, один для C, а не (A, B, C)), будут ли все они использоваться в приведенном выше запросе?

Ответы [ 2 ]

3 голосов
/ 27 мая 2010

Оптимизатор попытается использовать операцию Index Merge и использовать три индекса.

Выполните оператор с EXPLAIN перед ним, чтобы увидеть индексы, которые он может использовать и будет использовать. Рассмотрите FORCE INDEX и посмотрите, имеет ли это значение.

EXPLAIN SELECT * FROM my_table WHERE A in (a1, a2, a3) AND B in (b1, b2) AND C in (c1, c2, c3, c4) AND
0 голосов
/ 27 мая 2010

Просто проверьте это:

EXPLAIN SELECT * FROM ...;

Вы получите список выполненных запросов, их типы, используемые индексы и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...