建了索引却不走索引案例分析
2017-11-02 09:32
260 查看
这个博客和我生产碰到的很像:https://my.oschina.net/loujinhe/blog/1528233
CREATE TABLE
PRIMARY KEY (
UNIQUE KEY
) 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)
CREATE TABLE
t_order(
idbigint(20) unsigned NOT NULL AUTO_INCREMENT,
order_codechar(12) NOT NULL,
order_amountdecimal(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)
相关文章推荐
- SQL 优化之该走索引却不走索引的分析
- oracle 查询不走索引的范例分析
- SQL 优化之该走索引却不走索引的分析(二)
- 深入理解Oracle索引(23):6 种常见不走索引的原因分析
- MySQL的索引单表优化案例分析
- 某字段不走索引分析
- 类型转换导致执行计划不走索引测试案例
- 案例分析1:为什么强烈建议所有的外键要加索引
- 【性能优化案例】执行计划宁可走全表扫描,也不走索引
- ENode框架Conference案例分析系列之 - 文章索引
- SQL 优化之该走索引却不走索引的分析(二)
- HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据、分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引
- 深入理解Oracle索引(23):6 种常见不走索引的原因分析
- MySQL索引优化的实际案例分析
- 高性能的MySQL(5)索引策略-索引案例分析
- 利用虚拟索引(Virtual Index)优化数据库的案例分析
- 类型转换导致运行计划不走索引測试案例
- SQL 优化之该走索引却不走索引的分析
- SQL 优化之该走索引却不走索引的分析(二)
- LIRe 源代码分析 4:建立索引(DocumentBuilder)[以颜色布局为例]