什么会提供更好的性能,每个表或全局的专用pgsql触发器功能?

时间:2012-12-08 12:37:09

标签: sql database performance postgresql

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

请参阅“39.10.2。计划缓存”一节here

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