mysql触发器是否会为select语句产生额外的开销?

时间:2013-04-15 11:22:17

标签: php mysql database

我知道明显的答案是否定的。但是,在表上使用任何insertupdatedelete触发器是否会以任何方式影响同一个表的select语句?

1 个答案:

答案 0 :(得分:2)

没有。 100%

MySQL仅在sql_delete.cc,sql_insert.cc和sql_update.cc中处理触发器。

请参阅mysql-5.5 / sql目录下的源代码。例如,在http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_insert.cc搜索字符串“> process_triggers”。它是一个抽象插入,与具体的处理程序实现无关。

当我们在http://bazaar.launchpad.net/~mysql/mysql-server/5.5/view/head:/sql/sql_select.cc查看来源的“选择”部分时,我们就不会在代码中看到任何“触发器”(在评论中只有3次)。

所以正式我可以向你报告,在选择触发器期间不会受到任何影响 - 仅限于DML语句。

ps:请参阅http://dev.mysql.com/doc/internals/en/guided-tour-skeleton.html以了解鸟眼的MySQL内部结构。