您的位置:首页 > 其它

建了索引却不走索引案例分析

2017-11-02 09:32 260 查看
这个博客和我生产碰到的很像:https://my.oschina.net/loujinhe/blog/1528233

CREATE TABLE
t_order
(

id
bigint(20) unsigned NOT NULL AUTO_INCREMENT,

order_code
char(12) NOT NULL,

order_amount
decimal(12,2) NOT NULL,

PRIMARY KEY (
id
),

UNIQUE KEY
uni_order_code
(
order_code
) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

select order_code, order_amount from t_order order by order_code limit 1000;

优化器在优化时有两条选中:

全表扫描:直接全表扫描出内容order_code, order_amount,然后排序

索引扫描:先走索引order_code索引,再回表取出amount,随机IO,然后排序

limit 1000,优化器任务结果集很大,所以任务走全表扫描,减少随机IO,然后排序的方案较好

但是如果结果集很小时,又认为走索引,然后回表更好点

优化方案:覆盖索引

index(order_code, order_amount)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  不走索引