Вопрос по индексу MySQL - PullRequest
       2

Вопрос по индексу MySQL

2 голосов
/ 25 января 2011

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

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

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

Ответы [ 2 ]

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

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

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

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

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

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