什么是查询优化?

查询优化对于关系型数据库的性能非常重要,尤其是对于复杂 SQL 语句的执行。查询优化器决定实现每个查询的最佳方法。

例如,查询优化器选择是否对给定查询使用索引,以及在连接多个表时使用哪些连接方法。这些决策对 SQL 性能产生巨大影响,查询优化是每个应用程序的关键技术,从操作系统到数据仓库和分析系统再到内容管理系统。

查询优化的各种原则如下 -

  • 了解您的数据库如何执行您的查询- 查询优化的第一阶段是了解数据库正在执行什么。不同的数据库对此有不同的命令。例如,在 MySQL 中,可以使用“EXPLAIN [SQL Query]”关键字来查看查询计划。在 Oracle 中,可以使用“EXPLAIN PLAN FOR [SQL Query]”来查看查询计划。

  • 检索尽可能少的数据- 从查询中恢复的信息越多,数据库需要扩展以处理和保存这些记录的资源就越多。例如,如果它只能要求从表中获取一列,则不要使用 'SELECT *'。

  • 存储中间结果- 有时查询的逻辑可能非常复杂。通过使用子查询、内联视图和 UNION 类型的语句,可以产生所需的结果。对于这些方法,过渡结果不保存在数据库中,而是直接在查询中使用。这可能会导致成就问题,尤其是当过渡结果包含大量行时。

有各种查询优化策略如下 -

  • 使用索引- 可以使用索引是加速查询的第一个策略。

  • 聚合表- 它可用于在更高级别预填充表,因此需要解析的信息量较少。

  • 垂直分区- 可用于按列对表进行分区。此方法减少了 SQL 查询需要处理的信息量。

  • 水平分区- 它可用于按数据值对表进行分区,最常见的是时间。此方法减少了 SQL 查询需要处理的信息量。

  • 反规范化-反规范化过程将多个表组合成一个表。这加快了查询实现,因为需要更少的表连接。

  • 服务器调优- 每个服务器都有其参数并提供调优服务器参数,以便它可以完全利用可以显着加快查询实现的硬件资源。