数据库牛人是如何进行 SQL 优化的?
SQL 查询优化减少了查询所需的资源并提高了整体系统性能,在本文中,我们将讨论 SQL 查询优化、它是如何完成的、最佳实践及其重要性。
什么是 SQL 查询优化?
SQL 查询优化是编写高效的 SQL 查询,并在执行时间和数据库表示方面提高查询性能的迭代过程,查询优化是几个关系数据库管理系统 (RDBMS) 的一项重要功能。
写得不好的查询会消耗更多的系统资源,执行时间长,并可能导致服务损失。
查询是对来自数据库的数据或信息的问题或请求,需要编写一组数据库可以理解的预定义代码,结构化查询语言 (SQL) 和其他查询语言旨在检索或管理关系数据库中的数据。
数据库中的查询可以用许多不同的结构编写,并且可以通过不同的算法执行,写得不好的查询会消耗更多的系统资源,执行时间长,并可能导致服务损失,一个完美的查询可以减少执行时间并带来最佳的 SQL 性能。
SQL 查询优化的主要目的是:
减少响应时间并提高查询性能
减少 CPU 执行时间以获得更快的结果
最大限度地减少用于提高吞吐量的资源数量
SQL 查询优化是如何完成的?
确保查询处于最佳路径和形式非常重要,SQL 查询过程需要最好的执行计划和计算资源,因为它们是 CPU 密集型操作,SQL 查询优化通过三个基本步骤完成:
查询解析
优化
查询执行
解析确保查询在语法和语义上都是正确的,如果查询语法正确,则将其转换为表达式并传递到下一步。
优化在查询性能中扮演着重要的角色,并且可能很困难,任何考虑优化的查询执行计划都必须返回与之前相同的结果,但优化后的性能应该会有所提高。
SQL 查询优化包括以下基本任务:
检测需要改进的关键部件
分析查询执行以查找导致性能不佳的问题
改进查询执行计划以优化查询
最后,查询执行涉及将查询优化步骤生成的计划转化为操作,如果没有发生错误,此步骤将返回结果给用户。
什么是最佳实践?
一旦用户确定某个查询需要改进以优化 SQL 性能,他们就可以选择任何优化方法——优化 SQL 查询性能的方法有很多种,下面介绍了一些最佳实践。
避免 select *
提高查询性能的一种简单方法是将 SELECT *
替换为实际的列名,当开发人员在表中使用 SELECT *
语句时,它会读取每一列的可用数据。
使用 SELECT 字段名 FROM
而不是 SELECT * FROM
时,可以缩小查询期间从表中提取的数据的范围,这有助于提高查询速度。
避免循环内的查询
循环中的 SQL 查询运行不止一次,这会显着降低运行速度,这些查询会不必要地消耗内存、CPU 能力和带宽,这会影响性能,尤其是当 SQL 服务器不在本地计算机上时,删除循环内的查询可提高整体查询性能。
创建 SQL Server 索引
使用 SQL 服务器索引可以减少运行时间并更快地检索数据,可以使用聚集和非聚集 SQL 索引来优化 SQL 查询,非聚集索引单独存储,需要更多的磁盘空间,因此,了解何时使用索引很重要。
使用 OLAP 函数
该 OLAP 功能“扩展了 SQL 解析函数的语法。” SQL 中的 OLAP 功能更快且易于使用,熟悉这些语法的 SQL 开发人员和 DBA 可以很容易地适应和使用它们。
OLAP 函数可以创建所有标准计算度量,例如排名、移动聚合、份额、期初至今、前期和未来期、平行期等。
保持统计更新
查询优化器使用统计信息来确定如何最好地连接表、何时应该使用索引以及如何访问这些索引等,无论是手动还是自动,SQL 服务器统计信息都应该保持最新。
过时的 SQL Server 统计信息会影响表、索引或列统计信息,并导致查询计划性能不佳。
为什么 SQL 查询优化很重要?
SQL 查询优化可以轻松提高系统性能,从而节省成本,优化 SQL 查询可以提高运营效率并加快性能,从而提高系统上线进度。
SQL 查询优化很重要,原因有很多,包括:
在 SQL 数据库中提供更快的结果
降低每个查询的处理成本
降低数据库的查询处理压力
为查询处理消耗更少的内存
提高系统的整体性能
组织可以通过更快的响应时间获得可靠的数据访问和高水平的性能,优化 SQL 查询不仅可以提高整体系统性能,还可以提高组织的声誉,最终,SQL 查询优化的最佳实践帮助用户获得准确、快速的数据库结果。
版权声明: 本文为 InfoQ 作者【Ethereal】的原创文章。
原文链接:【http://xie.infoq.cn/article/4f0f977acba140b0b862d5e75】。未经作者许可,禁止转载。
评论