MySQL 查询优化器

MySQL 使用基于成本的优化器,它将尝试预测一个查询使用某种执行计划时的成本,并选择其中成本最小的一个

可以通过查询当前会话的 Last_query_cost 的值来得知 MySQL 计算的当前查询的成本:

mysql> SELECT SQL_NO_CACHE count(*) FROM payment;
mysql> SHOW STATUS LIKE 'Last_query_cost';
+-----------------+-------------+
| Variable_name   | Value       |
+-----------------+-------------+
| Last_query_cost | 3314.199000 |
+-----------------+-------------+

这个结果表示,MySQL 的优化器认为大概需要做 3314 个数据页的随机查找才能完成上面的查询。

优化器在评估成本的时候并不考虑任何层面的缓存带来的影响,它假设读取任何数据都需要一次磁盘 I/O

最后更新于