Mysql 不应该';这不是使用索引而不是where吗?
显示以下输出,尽管其上有索引。Mysql 不应该';这不是使用索引而不是where吗?,mysql,query-optimization,Mysql,Query Optimization,显示以下输出,尽管其上有索引。last\u active。。。。它不应该说索引而不是where EXPLAIN EXTENDED SELECT `member`.`id` , `member`.`name` FROM `member` WHERE `member`.`last_active` > '1289348406' 使用索引意味着查询根本不涉及表: 使用索引 只使用索引树中的信息从表中检索列信息,而无需执行额外的查找来读取实际行。当查询仅使用作为单个索引一部分的列时,
last\u active
。。。。它不应该说索引
而不是where
EXPLAIN EXTENDED SELECT `member`.`id` , `member`.`name`
FROM `member`
WHERE `member`.`last_active` > '1289348406'
使用索引
意味着查询根本不涉及表:
使用索引
只使用索引树中的信息从表中检索列信息,而无需执行额外的查找来读取实际行。当查询仅使用作为单个索引一部分的列时,可以使用此策略
因为不是所有字段都包含在索引中,所以这是不可能的
当然正在使用索引本身(因为访问类型是范围
),但它仍然需要在表中执行行查找,以检索名称
和id
的值
如果您想查看
使用索引,使用索引,请在(上次活动,名称,id)
上创建覆盖索引使用索引意味着查询根本不触及表:
使用索引
只使用索引树中的信息从表中检索列信息,而无需执行额外的查找来读取实际行。当查询仅使用作为单个索引一部分的列时,可以使用此策略
因为不是所有字段都包含在索引中,所以这是不可能的
当然正在使用索引本身(因为访问类型是范围
),但它仍然需要在表中执行行查找,以检索名称
和id
的值
在(上次活动,名称,id)
上创建一个覆盖索引如果您想查看使用索引
我只在一个页面上使用此查询,但它是一个非常活跃的页面。对于这样一个简单的查询,这样做是不是一个坏主意?对这些字段进行索引,因为它只会影响这个查询。在这样的查询上创建索引是一个坏主意吗?@Webnet:Thename
似乎是一个VARCHAR
,因此它可以使索引变大,但是,如果这个查询真的很重要,那么它比其他查询更需要缓存,所以这是一个好主意。您的表有多大?我只在1页上使用此查询,但它是一个非常活跃的页面。对于这样一个简单的查询,这样做是不是一个坏主意?对这些字段进行索引,因为它只会影响这个查询。在这样的查询上创建索引是一个坏主意吗?@Webnet:Thename
似乎是一个VARCHAR
,因此它可以使索引变大,但是,如果这个查询真的很重要,那么它比其他查询更需要缓存,所以这是一个好主意。你的桌子有多大?
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