sql优化-成本优化
MySQL的执行成本有:
- IO成本:数据和索引都是存放在磁盘中,IO成本即查询时从磁盘到内存的时间消耗
- CPU成本:即读取记录,判断搜索条件,结果排序的时间消耗
# 基于成本的优化步骤
- 根据搜索条件,找出所有可能使用的索引
- 计算全表扫描的代价
- 计算使用不同索引执行查询的代价
- 对比各代价,选最低成本方案
# 找出所有可能使用的索引
对于B+树索引,只要索引列和常熟使用下面的操作符连接,就会产生一个扫描区间
=,<=>,IN,NOT IN,IS NULL,IS NOT NULL,>,<,>=,<=,BETWEEN,!=,<>,LIKE
下面情况可以使用索引,比如:
- key1 IN ('a','b','c')
- key2>10 AND key2<1000
不能使用索引的,比如:
- key3>key2,没有常数
- key LIKE "%hello%",LIKE操作符与通配符开头的字母连接
# 计算全表扫描的代价
# 计算不同索引的代价
# 选最低成本方案
编辑 (opens new window)