赞
踩
MySQL以以下两个指标来估算一个sql的执行成本
在sql达到优化器的时候就会生成执行计划,计算执行这条sql的多个方式,最后会采用分值最低的访问方式。
MySQL可以很快计算出全表扫描的分值,因为MySQL有多少记录条数以及记录占用的空间,通过这些属性可以计算出表占用的页。
分值 = 页数 * 1.0 + 记录数 * 0.2
分值 = 1.0 + 记录数 * 0.2 + 记录数 * 1.0 + 记录数 * 0.2
找到第一个匹配的记录,找到最后一个匹配的记录,往后查询10个页。
分值 = 驱动表单次查询的成本 + 驱动表查询出来的记录数 * 被驱动表单次查询的成本
虽然我们可以用EXPLAIN看到优化器最终的选择,但是对我来说优化器还是一个黑盒,我们看不到优化器是如何选择的,为此MySQL设计者提供了optimizer trace的功能,可以让我们看到优化器是如何选择执行计划的,在执行任意一条MySQL语句之后通过执行获得优化器对sql的具体分析以及选择:
SELECT * FROM information_scheme.optimizer_trace
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。