Индекс MySQL: в чем разница между индексированием 2 полей? - PullRequest
0 голосов
/ 09 января 2011

Для поиска по таблице я использую 2 поля: field1, field2. Они не уникальны во всех записях, ни по отдельности, ни в сочетании.

Итак, я добавляю индексы для них:

Подход один:

alter table xx add index (field1, field2);
alter table xx add index (field2);

Подход второй:

alter table xx add index (field1);
alter table xx add index (field2);

Мой вопрос: каковы различия между этими двумя подходами, если таковые имеются? Для каждого из следующих запросов выбора:

select * from table xx where field1 = ??
select * from table xx where field2 = ??
select * from table xx where field1 = ?? and field2 = ??
select * from table xx where field1 = ?? or field2 = ??

Какой подход лучше?

И какой подход лучше для этого запроса?

select * from table xx where field1 = ?? and field2 = ??

1 Ответ

0 голосов
/ 09 января 2011

Для запросов, которые вы разместили, подход 1 будет лучше, поскольку составной индекс (field1, field2) будет использоваться для запросов с field1 = ?? and field2 = ??

Начиная с field1 = ?? or field2 = ?? запроса - индекса слияния будет пытаться применить, и не имеет значения, какой подход выбрать для этого типа запроса.

Подводя итог: если у вас есть field1 = ?? and field2 = ?? - тогда вам нужно выбрать составной индекс.

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