sql - 数据库触发器比查询慢吗?

标签 sql sql-server database oracle postgresql

<分区>

我想知道在表中每次插入后执行更新的触发器是否比在插入查询后手动执行更新查询慢。

最佳答案

PostgreSQL而言:

一次插入/更新一行,几乎。虽然 - 不一定是因为@Michael 争论的网络开销 - 您可以将 INSERT UPDATE 打包到单个查询中。考虑 writeable CTEs .

对于一次插入/更新多行或多行,,它可能要慢得多。在单个命令中处理多行的成本要低得多,因此针对 x 行的一次更新比由触发器启动的 x 个单独更新要便宜得多。

不过,没有什么可以说是肯定的,因为还有许多其他因素在起作用。

我在引用 the manual here :

PostgreSQL offers both per-row triggers and per-statement triggers. With a per-row trigger, the trigger function is invoked once for each row that is affected by the statement that fired the trigger.

大胆强调我的。

关于sql - 数据库触发器比查询慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799290/

相关文章:

SQL Server 2012 : How can a column-store index provide multiple columns at once?

php - 基于数据库中的数据在 PHP 中动态构建菜单太慢

php - PostgreSQL 插入不工作

SQL按类别求和和按月/年分组

java - jOOQ 的 limit..offset 问题 - 没有值集

SQL 选择多个总和?

c# - SQL 查询在 SSMS 中有效,但在 C# : SELECT denied 中无效

php - 将 MySQL 中的数据显示到 bootstrap 模式中(无 ajax)

使用 CharIndex 错误的 SQL 替换函数

sql-server - 选择与包含以下内容的单元格相关的任何列