我想弄明白我可能做错了什么。此查询似乎没有使用索引,因为它取代了长。
执行时:
Explain SELECT a, b, c, d FROM `table` WHERE d = 4013456
id select_type table type possible_keys key key_len ref rows Extra`
1 SIMPLE table ALL d NULL NULL NULL 79787 Using where`
index:
d INDEX 79787
我有什么问题吗?解释中的查询花了10秒钟......好像应该花不到一秒钟。
谢谢!
答案 0 :(得分:7)
您的索引未被使用的原因是因为d
是varchar
(您在评论中提到过这一点)并且您的where子句中有一个整数。如果您将查询更改为:
SELECT a, b, c, d FROM `table` WHERE d = '4013456';
它更有可能使用索引。但更好的解决方案可能是将列更改为整数并保留查询(如果在其他情况下可能的话)。
答案 1 :(得分:2)
如果d是varchar,则需要将其放在引号中。保留引号不会正确使用索引。