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

标签 sql database performance postgresql

我有数百个配置了更新触发器的表。 我想知道什么是更好的方法:
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)'

最佳答案

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

参见“39.10.2. 计划缓存”部分 here .

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

关于sql - 什么会提供更好的性能,每个表或全局的专用 pgsql 触发器函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777526/

相关文章:

mysql - 如何在sql中为串行数据类型的列创建外键

sql - 通过 RODBC : How do I deal with Hash Tables? 通过 RStudio 运行 SQL 查询

performance - haskell 从 bytestring 中读取成对的向量非常慢,如何让它更快?

c# - 数组写入的性能影响比预期的要大得多

sql - 查找某年获奖次数最多的电影——代码重复

mysql - SQL 连接表以获取其他表数据

php - MYSQL数据库存储错误

java - Recyclerview 有条件点击

database - 存储路线数据

python - 在 python 中使用 pandas 加速类似 vlookup 的操作