SELECT语句不使用possible_keys
我有一个遗留系统的表,没有主键。它记录了工厂发布材料的交易数据。
为了简单起见,我们可以说每行包含job_number,part_number,quantity&发行日期。
我在日期发布列中添加了一个索引。当我运行EXPLAIN SELECT * FROM issued_parts WHERE date_issued>'20100101'时,它显示如下:
+ ---- + ------------- + ---------------- + ------ + ------ ------------- + ------ + --------- + ------ + --------- + - ----------- +
| id | select_type |表|类型| possible_keys |关键| key_len | ref |行|额外的|
+ ---- + ------------- + ---------------- + ------ + ------ ------------- + ------ + --------- + ------ + --------- + - ----------- +
| 1 |简单| issued_parts |所有| date_issued_alloc | NULL | NULL | NULL | 9724620 |使用何处|
+ ---- + ------------- + ---------------- + ------ + ------ ------------- + ------ + --------- + ------ + --------- + - ----------- +
所以它看到了关键,但它不使用它?
有人可以解释原因吗?
没有找到相关结果
已邀请:
3 个回复
逝媳蘑贩茄
匹配您的查询的行数
如果您实际检索的行数超过表总数的5%,则MySQL查询优化器会决定执行全表扫描的工作量会减少。 现在,如果您的查询更精确,例如,使用以下内容:
那么,你将完全得到一个不同的EXPLAIN计划。
疏腔傻小雹
为具有相关列的键命名,但这并不意味着其中的每个键对查询都有用。在这种情况下,没有。
疮痪徘弦漏