mysql – 为什么这个查询使用where而不是index?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 为什么这个查询使用where而不是index?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1030字,纯文字阅读大概需要2分钟。
内容图文
EXPLAIN EXTENDED SELECT `board` . *
FROM `board`
WHERE `board`.`category_id` = '5'
AND `board`.`board_id` = '0'
AND `board`.`display` = '1'
ORDER BY `board`.`order` ASC
上述查询的输出是
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE board ref category_id_2 category_id_2 9 const,const,const 4 100.00 Using where
我有点困惑,因为我有一个索引,其中包含我使用的列,它们在查询中使用的顺序相同……:
category_id_2 BTREE No No
category_id 33 A
board_id 33 A
display 33 A
order 66 A
解决方法:
EXPLAIN的输出有时会产生误导.
例如,filesort与文件无关,使用where并不意味着你正在使用WHERE子句,并且使用index可以在没有定义单个索引的情况下显示在表上.
使用where只表示表上有一些限制条款(WHERE或ON),并不会返回所有记录.请注意,LIMIT不算作限制条款(尽管可以).
使用索引意味着从索引返回所有信息,而不寻求表中的记录.只有在索引覆盖查询所需的所有字段时,才可以执行此操作.
由于您选择*,这是不可能的. category_id,board_id,display和order以外的字段不在索引中,应该查找.
内容总结
以上是互联网集市为您收集整理的mysql – 为什么这个查询使用where而不是index?全部内容,希望文章能够帮你解决mysql – 为什么这个查询使用where而不是index?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。