📜  SQL 查询优化的最佳实践

📅  最后修改于: 2022-05-13 01:55:21.820000             🧑  作者: Mango

SQL 查询优化的最佳实践

SQL 代表结构化查询语言,用于与关系数据库进行交互。它是一种用于管理、组织、操作和从数据库中检索数据的工具。 SQL 提供了惊人的优势,例如更快的查询处理、高度可移植性、交互式语言、成本效益等等。当需要从 SQL 中检索数据时,会发送一个请求。 DBMS 处理请求并将它们返回给我们。

SQL 查询优化的最佳实践

SQL 的主要目的是从数据库中检索数据。因此,如果这些语句不够有效,这可能会导致服务器速度变慢。因此需要进行SQL 查询优化以最大化输出。在本博客中,我们将讨论SQL 查询优化的最佳实践。但首先,让我们了解 SQL 查询优化的要求。所以让我们开始吧。

SQL查询优化需求

SQL 查询优化的主要目标是减少系统资源的负载并在更短的时间内提供准确的结果。它使代码更高效,这对于优化查询性能很重要。 SQL 查询优化的主要原因是:

  • 增强性能:SQL 查询优化的主要原因是减少响应时间并提高查询性能。为了更好的用户体验,需要最小化请求和响应之间的时间差。
  • 减少执行时间: SQL 查询优化确保减少 CPU 时间,从而获得更快的结果。此外,确保网站快速响应并且没有明显的滞后。
  • 提高效率:查询优化减少了在硬件上花费的时间,因此服务器以更低的功耗和内存消耗高效运行。

SQL 查询优化的最佳实践

1. 使用 Where 子句而不是有

使用 Where 子句代替 Have 在很大程度上提高了效率。查询比拥有更快执行的地方。创建组之前记录过滤器的位置,创建组之后记录过滤器。这意味着使用Where 而不是 have 将提高性能并最大限度地减少花费的时间要了解有关 where 子句的更多信息,请阅读文章SQL – Where 子句

例如:

  • 从表名中选择名称年龄>=18; – 只显示年龄大于或等于 18 岁的姓名,而
  • SELECT age COUNT(A) AS Students FROM table_name GROUP BY age HAVING COUNT(A)>1; – 导致首先重命名行,然后仅显示那些通过条件的值

2.避免循环内的查询

这是您必须遵循的最佳优化技术之一。在循环内运行查询将在很大程度上减慢执行时间。在大多数情况下,您将能够批量插入和更新数据,与循环内的查询相比,这是一种更好的方法。

在 for、while 和 do-while 等循环中可见的迭代模式需要大量时间来执行,因此也会影响性能和可伸缩性。为了避免这种情况,所有的查询都可以在循环之外进行,因此可以提高效率。

3. 使用 Select 而不是 Select *

提高效率的最佳方法之一是减少数据库的负载。这可以通过限制从每个查询中检索的信息量来完成。使用 Select * 运行查询将检索数据库表中可用的所有相关信息。它将从数据库中检索所有不必要的信息,这会花费大量时间并增加数据库的负载。

让我们借助一个例子更好地理解这一点。考虑一个表名 GeeksforGeeks,它具有Java、 Python和 DSA 等列名。

  • 从 GeeksforGeeks 中选择 *; – 为您提供完整的表格作为输出,而
  • 从 GeeksforGeeks 中选择条件; – 只为您提供首选(选定)值

因此,更好的方法是使用带有定义参数的 Select 语句来仅检索必要的信息。使用Select 将减少数据库的负载并提高性能。

4.在查询开头添加说明

解释关键字来描述 SQL 查询是如何被执行的。此描述包括表的连接方式、顺序等。它是一种有益的查询优化工具,可进一步帮助了解执行的分步详细信息。添加说明并检查您所做的更改是否显着减少了运行时间。运行解释查询需要时间,因此只能在查询优化过程中完成。要获取有关解释查询的更多信息,请单击此处。

5. 在短语末尾保留通配符

通配符用于替换字符串中的一个或多个字符。它与 LIKE运算符一起使用。 LIKE运算符与 where 子句一起使用以搜索指定的模式。将前导通配符与结尾通配符配对将检查两个通配符之间匹配的所有记录。让我们借助一个例子来理解这一点。

考虑一个有 2 列名称和薪水的表 Employee。有 2 名不同的员工,即 Rama 和 Balram。

  • 从 Employee 中选择姓名、薪水 其中姓名如 '%Ram%';
  • 从员工中选择姓名,薪水,其中姓名如'Ram%';

在这两种情况下,现在当您搜索 %Ram% 时,您将同时获得结果 Rama 和 Balram,而 Ram% 将只返回 Rama。当有多个记录表明如何通过在短语末尾使用通配符来提高效率时,请考虑这一点。

6. 使用 Exist() 而不是 Count()

Exist() 和 Count() 都用于搜索表是否有特定记录。但在大多数情况下,Exist() 比 Count() 更有效。因为 Exist() 将一直运行直到找到第一个匹配条目,而 Count() 将继续运行并提供所有匹配记录。因此,这种SQL 查询优化实践节省了大量时间和计算能力。 EXISTS 在逻辑测试被证明为真时停止,而 COUNT(*) 必须计算每一行,即使它通过了测试。

所以到现在,你一定对 SQL 查询优化的最佳实践有一个清晰的认识。如果您愿意学习 SQL,那么请通过从基础到高级的免费 SQL 教程。