现有一张表 字段类型如下:album_img_id
int(11) unsigned NOT NULL AUTO_INCREMENT,album_id
int(11) unsigned NOT NULL DEFAULT '0',description
varchar(2000) NOT NULL,
PRIMARY KEY (album_img_id
),
KEY album_id
(album_id
)
我执行如下sql语句:
EXPLAIN
SELECT * FROM web_company_album_img WHERE album_id = 0
出现如下图:
再次执行如下语句:
EXPLAIN
SELECT * FROM web_company_album_img WHERE album_id = 13601
出现如下图:
表中album_id明明是建立了索引,为什么album_id的查询条件是0的时候就不走索引了,而查询条件不是0的时候就走索引,不明白为什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
mysql 查询优化器的选择结果... 认为不走索引 查询效率更高..
看你的表结构album_id
int(11) unsigned NOT NULL DEFAULT '0',
album_id 默认值为0
然后数据表中估计album_id为0 的数据又有很多,导致不用索引反而比用索引效率高。
这就是mysql 查询优化器的选择