MySQL 5.7版本说明
MySQL使用基于成本的优化器来确定解决查询的最佳方法。在许多情况下,MySQL可以计算出最佳的查询计划,但有时MySQL没有足够的关于手头数据的信息,所以不得不制定”受过教育的”对数据进行猜测。
对于MySQL没有做“正确”的事情的情况,你可以使用的工具来帮助MySQL:
使用
解释
语句获取MySQL如何处理查询的信息。要使用它,只需添加关键字解释
到你的前面选择
声明:mysql>解释SELECT * FROM t1, t2 WHERE t1。我= t2.i;
解释
详细讨论在第13.8.2节,“EXPLAIN语句”.使用
分析表
更新扫描表的键分布。看到第13.7.2.1节,“ANALYZE TABLE语句”.tbl_name
使用
力指数
告诉MySQL,与使用给定的索引相比,表扫描是非常昂贵的:SELECT * FROM t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name=t2.col_name;
使用索引
而且忽略指数
也可能有用。看到第8.9.4节“索引提示”.全球和表级
STRAIGHT_JOIN
.看到第13.2.9节,“SELECT语句”.您可以调优全局或线程特定的系统变量。例如,开始mysqld与
——max-seeks-for-key = 1000
选择或使用设置max_seeks_for_key = 1000
告诉优化器假设没有键扫描导致超过1000个键寻道。看到第5.1.7节,“服务器系统变量”.