基于成本的优化
MySQL中一条查询语句的执行成本是由下边这两个方面组成的:
查询成本=I/O成本+CPU成本
I/O成本:从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。
CPU成本:读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。
成本常数:一个页面花费的成本默认是1.0,读取以及检测一条记录是否符合搜索条件的成本默认是0.2。1.0、0.2这些数字称之为成本常数。
基于成本的优化步骤:
-
根据搜索条件,找出所有可能使用的索引(找出聚簇索引+二级索引+联合索引)
-
计算全表扫描的代价(全表扫描)
-
计算使用不同索引执行查询的代价(二级索引+回表)
-
对比各种执行方案的代价,找出成本最低的那一个
2.计算全表扫描的代价:
-
聚簇索引占用的页面数
-
该表中的记录数
3.计算使用不同索引执行查询的代价(二级索引+回表)
MySQL查询优化器先分析使用唯一二级索引的成本,再分析使用普通索引的成本
查询的成本分析:
①范围区间数量
②需要回表的记录数
连接查询的成本
两表连接的成本分析
多表连接的成本分析
本文详细阐述了如何在MySQL中通过计算I/O和CPU成本,利用成本常数优化查询性能。讲解了全表扫描、索引选择(包括聚簇索引、二级索引和联合索引)、范围区间分析、连接查询成本分析以及如何调整成本参数来找到最优执行计划。
1107

被折叠的 条评论
为什么被折叠?



