Browsing the archives for the derived tag

MySQL 数据库优化(11)The Query Optimization Process

in mysql

摘自:http://www.chenyajun.com/2009/01/02/1623 查询优化过程 查询优化器 一个查询通常有很多种不同的但是产生相同结果的执行方式,优化器要找到最好的。 MySQL使用基于代价的优化器,它意味着它尽力预计不同执行计划的代价并选择最不昂贵的,代价的单位是一个4k的数据页的次数。你可以通过查看 Last_query_cost看到优化器预计的代价: mysql> SELECT SQL_NO_CACHE COUNT(*) FROM sakila.film_actor; +----------+ | count(*) | +----------+ | 5462 | +----------+ mysql> SHOW STATUS LIKE 'last_query_cost'; +-----------------+-------------+ | Variable_name | Value | +-----------------+-------------+ | Last_query_cost | 1040.599000 | +-----------------+-------------+ 这意味着它要随机读取1040个数据页。它基于统计而估计:每个表或者索引的page数量,索引中不同值的比例,行和key的长度,key的分布。 优化器估计时并不包括任何类型的cache所产生的效果——它假定每次读都是一个磁盘IO操作。

0 Comments