四.优化SELECT语句

优化查询的主要考虑因素是:

  • 为了使慢速SELECT ... WHERE查询更快,首先要检查的是是否可以添加索引。在WHERE子句中使用的列上设置索引,以加快评估,过滤和最终检索结果的速度。为避免浪费磁盘空间,请构建一小组索引,以加快应用程序中使用的许多相关查询的速度。

    对于使用连接和外键之类的功能引用不同表的查询,索引尤其重要 。您可以使用该EXPLAIN语句来确定用于的索引 SELECT

  • 隔离和调整查询中花费过多时间的任何部分,例如函数调用。根据查询的结构方式,可以对结果集中的每一行调用一次函数,甚至可以对表中的每一行调用一次函数,从而极大地提高了效率。

  • 最小化 查询中全表扫描的次数 ,特别是对于大表。

  • 通过ANALYZE TABLE定期使用该语句来使表统计信息保持最新 ,使得优化器具有构造有效执行计划所需的信息。

  • 了解特定于每个表的存储引擎的调整技术,索引技术和配置参数。InnoDBMyISAM有两套准则的实现和维持查询高性能。

  • 您可以InnoDB使用优化InnoDB只读事务”中的技术优化表的 单查询事务 。

  • 避免以难以理解的方式转换查询,尤其是在优化程序自动执行某些相同转换的情况下。

  • 如果使用基本准则之一不能轻松解决性能问题,请通过阅读EXPLAIN计划并调整索引,WHERE子句,连接子句等来调查特定查询的内部详细信息 。

  • 调整MySQL用于缓存的内存区域的大小和属性。通过有效地使用 InnoDB 缓冲池, MyISAM键高速缓存和MySQL查询高速缓存,重复查询的运行速度更快,因为第二次及以后都从内存中检索了结果。

  • 即使对于使用缓存区域快速运行的查询,您仍可能会进一步优化,以使它们需要更少的缓存,从而使您的应用程序更具可伸缩性。可伸缩性意味着您的应用程序可以处理更多的并发用户,更大的请求等,而不会导致性能大幅下降。

  • 处理锁定问题,其中其他会话同时访问表可能会影响查询速度。

Last updated