Oracle示例:
explain plan for select * from sample_table where column_name = :1
这将以表格形式返回包含详细步骤和开销的查询计划。
PostgreSQL上的示例
explain (format yaml) select * from sample_table where column_name = $1
这将最终返回一个要求提供参数的错误。
explain (format yaml) select * from sample_table where column_name = $$$$
这将最终返回时间戳和整数的错误
explain (format yaml) select * from sample_table where column_name = null
这将返回不完整的计划,没有过滤器信息,因为我们传递的是null。
注意:注意它可能正在查找实际参数。
任何人都可以请指导任何适当的值,可用于字符变化,文本,整数和时间戳,可以给予一个完整的计划?关键是,我们不能通过由于数据的问题,实际参数。
2条答案
按热度按时间3gtaxfhh1#
在PostgreSQL中获得一个通用计划并不容易,你可以通过设置
plan_cache_mode = force_generic_plan
,创建一个预准备语句,并在提供NULL值的同时调用EXPLAIN EXECUTE ...
来实现。您可以在my article中找到描述的过程。
我有PostgreSQL V16的submitted a patch,它将这个功能添加到了核心。如果你希望这样做,你可以查看这个补丁或者在邮件列表中表达你的兴趣。
5f0d552i2#
如果使用预准备语句,则可以获取特定值的执行计划:
然后使用以下公式获取特定值的计划: