为什么多余的是“使用where;使用索引”而不是“使用索引”。
CREATE TABLE `pre_count` (
`count_id` varchar(38) NOT NULL,
`cam_id` varchar(38) NOT NULL,
`count_time` datetime NOT NULL,
PRIMARY KEY (`cam_id`,`count_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
解释select count_time from pre_count where cam_id = '56849645645645646'
结果:
1 SIMPLE pre_count ref PRIMARY PRIMARY 116 const 1 Using where; Using index
答案 0 :(得分:1)
这只是意味着您的WHERE子句中的条件将用于限制查询返回的行。如果您在EXPLAIN Extra中没有不有“在何处使用”,则查询将不会限制行。
这就是手册中的含义:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain-extra-information
WHERE子句用于限制要与下一个表匹配或发送给客户端的行。除非您特别打算从表中获取或检查所有行,否则如果Extra值不是Using where并且表联接类型为 ALL 或 index <,则查询中可能会出问题。 / em>。
我可以发誓,即使查询确实使用了索引并限制了行的返回,我的EXPLAIN报表中仍然缺少“使用位置”的情况。
我被迫得出结论,并非针对所有类型的行限制都可靠地报告“在哪里使用”。
其他人已经注意到“在哪里使用”的含义容易混淆或不一致:https://bugs.mysql.com/bug.php?id=30733