2010-11-10 59 views
1
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

Using index意味着查询不接触表在所有:

Using index

列信息是从在索引树中仅使用信息的表中检索,而不必做一个额外寻求阅读实际的行。当查询仅使用属于单个索引一部分的列时,可以使用此策略。

由于并非所有的字段都被索引覆盖,所以这是不可能的。

该索引本身当然被使用(因为访问类型为range),但它仍然需要在表中进行行查找以检索nameid的值。

如果您想查看Using index,请创建一个覆盖指数(last_active, name, id)

+0

我只在1页上使用此查询,但它是一个非常活跃的页面。对于这样一个简单的查询,这样做不是个好主意吗? – Webnet 2010-11-10 00:55:30

+0

@Webnet:做什么? – Quassnoi 2010-11-10 01:04:34

+0

要索引这些字段,因为它只会影响此查询。在这样的查询上创建索引是个坏主意吗? – Webnet 2010-11-12 17:43:50

相关问题