2012-07-02 2 views
1

Я не совсем уверен, как работают индексы.Указатель индекса MySQL

Вот как я это понял, пожалуйста, поправьте меня, если я ошибаюсь, или подтвердить, если я прав:
У меня есть запрос:

SELECT * FROM people WHERE age < 40 AND country = 'United States' 

Мой индекс находится на country поле.
Сначала он ищет страну (потому что есть индекс), составляет список результатов, а затем ищет список для age < 40. Я прав?

ответ

4

Это может быть тем, что делает СУБД. Ваша СУБД будет смотреть на SQL и генерировать несколько возможных «планов выполнения», выяснить, насколько они «дороги», и выбрать лучший. Конечно, описанный вами план - это тот, который, вероятно, рассмотрит DMBS, но на 100% не гарантированно выбрать этот план.

Это зависит от множества других факторов, в том числе от того, как выглядят данные. СУБД попытается выбрать планы, которые будут фильтровать данные как можно раньше, чтобы данные, проходящие через систему, были сведены к минимуму. Если СУБД может видеть, что очень немного стран = «Соединенные Штаты», возможно, скорее всего, сначала будет обрабатывать эту часть запроса. Это сделает последующие операции более дешевыми.

Для получения дополнительной информации запустите MYSQL EXPLAIN (documentation), чтобы узнать, что именно делает СУБД.

Смежные вопросы