我们目前有一个 oninsert() 触发器设置,每次将一行插入到表中时,都会触发更新查询以更新 3 个字段。这些字段是一个简单的计算,例如
field1update = (amt/12)*14
field2update = (amt/12)*16
field3update = (amt/12)*18
触发器就足够了,但它有时会锁定行,因此暂时无法立即访问。我的问题是,如果将这些字段转换为(请原谅我的无知)计算列或计算列,我们会看到性能改进吗?
通常这是一个电子表格导入,一次插入大约 20,000 - 25,000 行。
根据您提供的信息,我做了一个非常基本的测试,我建议您在做出最终决定之前设置类似的东西。我的结果显示计算列的性能优于触发器,但我想强调它可能会随着您的表结构、插入率、表中的其他活动而变化,并且您需要进行测试。
设置:
插入两个表。
与第二个(计算列)插入(30%)相比,第一个(触发)插入必须做更多的工作(70%)。如果我查看第一次插入 (.010023+.0132842)=0.0233072 和第二次插入的子树成本是 0.0100022。
对于触发器插入的 cpu 时间,我得到
对于计算列插入,我得到: