1

我有数百个配置有更新触发器的表。我想知道什么是更好的方法:
1. 创建每个表触发器函数,其中触发器代码(所有表的逻辑相同)特定于表。
2.创建一个全局函数,通过创建动态sql语句来处理所有表,并将其配置为所有表的触发函数。

我想知道每个表的函数是否会更快地工作,因为 pgsql 可以预编译并重用该函数,而全局函数需要在每次调用时通过表名动态创建 sql 语句。
为了更清楚,在每个表函数中,我可以为 TableA 编写:

insert into log_table values('TableA', x, y, z)    

而在全球范围内,我需要将其写为:

EXECUTE 'insert into log_table values(' || current_table || ', x, y, z)'
4

1 回答 1

1

由于执行计划缓存,最好不要使用动态 sql。

请参阅此处的“39.10.2. 计划缓存”部分。

但只有真正的测试才会显示性能差异(如果有的话)。

于 2012-12-08T12:48:15.337 回答