3.SQL优化之SELECT语句

介绍

数据库应用程序的核心逻辑是通过SQL语句执行的,无论是直接通过解释器发出还是通过API在幕后提交。所以优化SQL语句是优化数据库的重中之重。

1 优化SELECT语句

SELECT调优不光适用于以SELECT开始的SQL语句,也适用于DELETE语句中的CREATE TABLE … AS SELECT,INSERT INTO … SELECT和WHERE子句等构造。 这些语句需要考虑其他的性能影响因素,因为它们将写操作与面向读取的查询操作相结合。

NDB Cluster支持连接下推优化,此功能在其他内容中讲解。

SQL优化的主要因素:

  • 要使SELECT … WHERE查询更快,首先应该想到的是增加索引,增加索引的方式一般是在where语句中使用的列上增加索引,索引不易过多字段组合,这里有个经验值不超过3个字段。
  • 最大限度地减少查询中的全表扫描次数,尤其是对于大型表。
  • 通过定期使用ANALYZE TABLE语句使表统计信息保持最新,因此优化程序具有构建有效执行计划所需的信息。
  • 了解不同引擎的调优技术,索引技术和配置参数。这部分后面会进行详细讲解。
  • 利用InnoDB的只读事务,优化InnoDB的查询事务。
  • 在优化程序自动执行某些相同转换的情况下,尽量避免不易理解的方式转换查询。
  • 请通过阅读EXPLAIN计划并调整索引,WHERE子句,join子句等来调查特定查询的内部详细信息。这部分后续详细讲解。
  • 调整MySQL用于缓存的内存区域的大小和属性。通过有效使用InnoDB buffer pool,MyISAM key cache和MySQL query cache,重复查询运行得更快,因为在第二次及以后的时间内从内存中检索结果。
  • 即使对于使用高速缓存存储区快速运行的查询,可以进一步优化,以便它们需要更少的高速缓存,从而使应用程序更具可伸缩性。 可伸缩性意味着应用程序可以处理更多的并发用户,更大的请求等,而不会出现性能大幅下降的情况。
  • 处理锁定问题,其中查询的速度可能会受到同时访问表的其他会话的影响。

猜你喜欢

转载自blog.csdn.net/ciqingloveless/article/details/83375364