四.优化SELECT语句
优化查询的主要考虑因素是:
为了使慢速
SELECT ... WHERE
查询更快,首先要检查的是是否可以添加索引。在WHERE
子句中使用的列上设置索引,以加快评估,过滤和最终检索结果的速度。为避免浪费磁盘空间,请构建一小组索引,以加快应用程序中使用的许多相关查询的速度。对于使用连接和外键之类的功能引用不同表的查询,索引尤其重要 。您可以使用该
EXPLAIN
语句来确定用于的索引SELECT
隔离和调整查询中花费过多时间的任何部分,例如函数调用。根据查询的结构方式,可以对结果集中的每一行调用一次函数,甚至可以对表中的每一行调用一次函数,从而极大地提高了效率。
最小化 查询中全表扫描的次数 ,特别是对于大表。
通过
ANALYZE TABLE
定期使用该语句来使表统计信息保持最新 ,使得优化器具有构造有效执行计划所需的信息。了解特定于每个表的存储引擎的调整技术,索引技术和配置参数。
InnoDB
与MyISAM
有两套准则的实现和维持查询高性能。您可以
InnoDB
使用优化InnoDB只读事务”中的技术优化表的 单查询事务 。避免以难以理解的方式转换查询,尤其是在优化程序自动执行某些相同转换的情况下。
如果使用基本准则之一不能轻松解决性能问题,请通过阅读
EXPLAIN
计划并调整索引,WHERE
子句,连接子句等来调查特定查询的内部详细信息 。调整MySQL用于缓存的内存区域的大小和属性。通过有效地使用
InnoDB
缓冲池,MyISAM
键高速缓存和MySQL查询高速缓存,重复查询的运行速度更快,因为第二次及以后都从内存中检索了结果。即使对于使用缓存区域快速运行的查询,您仍可能会进一步优化,以使它们需要更少的缓存,从而使您的应用程序更具可伸缩性。可伸缩性意味着您的应用程序可以处理更多的并发用户,更大的请求等,而不会导致性能大幅下降。
处理锁定问题,其中其他会话同时访问表可能会影响查询速度。
Last updated