2011-01-25 5 views
2

Я недавно читал об индексах в MySQL, и некоторые из этих принципов довольно просты, но одна концепция по-прежнему меня раздражает: в принципе, если в гипотетической таблице с, скажем, 10 столбцами, у нас есть два индекса один столбец (для column01 и column02 соответственно), а также первичный столбец ключ (другой столбец), то они будут использоваться в простой запрос на выборку, как этот или нет:Вопрос об индексе MySQL

SELECT * FROM table WHERE column01 = 'aaa' AND column02 = 'bbb'

Глядя на это, мой первый инстинкт говорит мне, что первый индекс собирается получить набор строк (или первичные ключи в InnoDB, если я правильно понял), которые удовлетворяют первому условию, а второй индекс wil Я получаю другой набор. И окончательный набор результатов будет просто пересечением этих двух. В книгах, которые я пережил, я не могу найти ничего об этом конкретном сценарии. Конечно, для этого конкретного запроса один индекс в обоих столбцах кажется лучшим вариантом, но я борюсь с пониманием реального процесса, стоящего за всем этим, если я попытаюсь использовать два индекса, которые я описал выше.

ответ

1

Его единственный способ использовать единственный индекс. Вам нужно создать составной индекс нескольких столбцов, если вы хотите, чтобы он мог индексировать каждый столбец, который вы тестируете. Вы можете прочитать manual, чтобы узнать, как MySQL использует каждый тип индекса, и как правильно упорядочить составные индексы, чтобы наилучшим образом использовать его.

+0

Спасибо за вашу помощь! – parrker9

1

Это на самом деле самый распространенный вопрос об индексации вообще: это лучше иметь один индекс со всеми столбцами или один индивидуального индексом для каждого столбца?

http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/index-combine-performance

+0

Спасибо за ссылку! – parrker9

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