Разве это не должно использовать индекс вместо где? - PullRequest
1 голос
/ 10 ноября 2010
EXPLAIN EXTENDED SELECT  `member`.`id` ,  `member`.`name` 
FROM  `member` 
WHERE  `member`.`last_active` >  '1289348406'

Показывает следующий вывод, несмотря на то, что last_active имеет индекс на нем .... не должен ли он сказать index вместо where?

id  select_type table   type    possible_keys   key key_len ref rows    filtered    Extra
1   SIMPLE  member  range   last_active last_active 4   NULL    2   100.00  Using where

1 Ответ

1 голос
/ 10 ноября 2010

Using index означает, что запрос вообще не касается таблицы:

Using index

Информация столбца извлекается из таблицы с использованием только информации в дереве индексабез необходимости делать дополнительный поиск, чтобы прочитать фактическую строку.Эту стратегию можно использовать, когда в запросе используются только столбцы, являющиеся частью одного индекса.

Поскольку не все поля охватываются вашим индексом, это невозможно.

Сам индексконечно используется (так как тип доступа range), но ему все еще нужно выполнить поиск строк в таблице, чтобы получить значения name и id.

Создать покрытиеиндекс на (last_active, name, id), если вы хотите увидеть Using index.

...