两个插入语句或插入触发器最好?

时间:2014-10-24 05:42:25

标签: sql-server database-performance

我想在两个表中插入相同的数据。什么是最好的 - 一个sp中的两个insert语句或一个表中的insert,并在同一个表上插入触发器以在第二个表中插入数据。

哪个查询会提高我的性能并避免表中的死锁?

提前谢谢你......

2 个答案:

答案 0 :(得分:0)

对于必须强制执行,传播内容或无法直接处理所有情况的情况,触发器应该是脱节的。

它们并不是DML的主要途径。

可以说,如果您不能使用存储过程,或者一个表是“隐藏”或审计表,则可以使用触发器。但是如果它是主要的逻辑,你就有能力把它包装在一个SP中,考虑隐藏逻辑是否合适,看不见是不可能的。

避免使用触发器以避免编写冗余逻辑。这会混淆细节。

就你的表现问题而言,它是相同的。没有性能优势。

答案 1 :(得分:-1)

一个SP中的两个插入在任何给定的日期都更好,因为在这种情况下,创建触发器所涉及的开销是不必要的。 根据MySQL存储过程编程,第256页下的头部" Trigger Overhead"说以下内容:

  

重要的是要记住,必要时,触发器会增加开销   到它们适用的DML语句。实际数量   开销将取决于触发器的性质,但是 - 就像所有   MySQL触发器执行FOR EACH ROW ---开销可以快速进行   累积处理大量行的语句。您   因此,应避免放置任何昂贵的SQL语句或   触发器中的程序代码。

第529-531页给出了触发开销的扩展说明。该部分的结论点如下:

  

这里的教训是这样的:因为触发器代码将执行一次   受DML语句影响的每一行,触发器都很容易变成   DML性能中最重要的因素。里面的代码   触发器主体需要尽可能轻量级 - 并且 -   特别是 - 应该支持触发器中的任何SQL语句   索引尽可能。