小编a.o*_*ron的帖子

如何使PostgresQL优化器在绑定参数后构建执行计划?

我正在为PostgresQL 9.1开发Pg/PLSQL函数.当我在SQL查询中使用变量时,优化器会构建错误的执行计划.但是如果我用它的值替换变量,那么计划就可以了.例如:

v_param := 100;
select count(*)
  into result
  from <some tables>
 where <some conditions>
       and id = v_param
Run Code Online (Sandbox Code Playgroud)

在3s内完成

select count(*)
  into result
  from <some tables>
 where <some conditions>
       and id = 100
Run Code Online (Sandbox Code Playgroud)

在300ms内完成

在第一种情况下,优化器为任何v_param值生成固定计划.

在第二种情况下,优化器基于指定的值生成计划,尽管不使用计划缓存,但它的效率明显更高.

是否可以使优化器在没有动态绑定的情况下生成计划,并在每次执行查询时生成计划?

sql postgresql sql-optimization

3
推荐指数
1
解决办法
2104
查看次数

标签 统计

postgresql ×1

sql ×1

sql-optimization ×1