优化 COUNT()、MIN() 和 MAX()

索引和列是否可为空通常可以帮助 MySQL 优化这类表达式。

例如,要找到某一列的最小值,只需要查询对应 B-tree 索引最左端的记录,MySQL 可以直接获取索引的第一行记录。在优化器生成执行计划的时候就可以利用这一点,在 B-tree 索引中,优化器会将这个表达式作为一个常数对待。类似地,如果要查找一个最大值,也只需读取 B-tree 索引的最后一条记录

如果 MySQL 使用了这种类型的优化,那么在 EXPLAIN 中就可以看到 “Select tables optimized away”,它表示优化器已经从执行计划中移除了该表,并以一个常数代替。

最后更新于