开发者社区 问答 正文

mysql索引异常

现有一张表 字段类型如下:
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
出现如下图:
9
再次执行如下语句:
EXPLAIN
SELECT * FROM web_company_album_img WHERE album_id = 13601
出现如下图:
10
表中album_id明明是建立了索引,为什么album_id的查询条件是0的时候就不走索引了,而查询条件不是0的时候就走索引,不明白为什么?

展开
收起
落地花开啦 2016-02-14 17:42:11 2562 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    mysql 查询优化器的选择结果... 认为不走索引 查询效率更高..
    看你的表结构album_id int(11) unsigned NOT NULL DEFAULT '0',
    album_id 默认值为0
    然后数据表中估计album_id为0 的数据又有很多,导致不用索引反而比用索引效率高。
    这就是mysql 查询优化器的选择

    2019-07-17 18:42:49
    赞同 展开评论