执行计划修改

问题描述 投票:0回答:2

我一直在研究查询基本上是如何通过 EXPLAIN 关键字工作的,它为您提供了一个执行计划,说明执行查询时按顺序发生的事情。所以我想知道是否有某种方法可以更改我们查询的执行计划(更具体地说,以我们自己定制的方式对特定查询扫描表,而不是它自己的默认扫描)

我正在查看我的查询的执行计划,它是如何工作的,并想以我自己的方式运行它,但一直找不到任何关于它的信息。

sql-execution-plan apache-age
2个回答
1
投票

关于更改查询的执行计划,PostgreSQL 有一个名为“planner hints”的功能,它允许您指导查询计划器决定如何执行查询。这些提示为规划器提供了有关应如何处理特定表、索引或查询以实现更优化的执行计划的信息。

进一步阅读:here pg_hint_plan -- 在特殊形式的注释中用提示短语控制执行计划。

需要注意的是,使用计划器提示应该小心,并且只在绝对必要的情况下使用。在大多数情况下,PostgreSQL 查询计划器 在优化查询计划方面做得非常出色,强制执行特定计划实际上可能会导致性能不佳。


0
投票

除了答案之外,另外两种改变查询执行计划的方式是

  1. 使用索引:您可以在特定列上创建或删除索引,以影响查询优化器使用不同的执行计划。 PostgreSQL 提供了几种类型的索引供您使用。

  2. 物化视图:PostgreSQL提供了物化视图,即存储在数据库中的预先计算的视图。通过使用这些视图,您可以减少所需的计算量,因为您只需加载预先计算的视图即可。

© www.soinside.com 2019 - 2024. All rights reserved.