触发还是多个查询?性能效率


Trigger or multiple queries ? Performance efficiency?

我正在设计一个使用php和mysql的web应用程序。我对数据库有一点怀疑。应用程序类似于

  1. 用户自行注册。
  2. 用户输入工作负载(当然是在登录后:))。
  3. 用户退出。

现在有多种类型的输入,我接受在同一形式。假设有3种类型的输入,它们存储在7个不同的表中(客户端需求:()

现在我的问题是输入完成后触发查询的最佳方式是什么?目前我能想到以下几种方法。

    从php触发7个不同的查询
  1. 编写触发器在适当的表中传播输入?

请指导我哪种方法是高效的?谢谢:)

一般情况下,您希望远离触发器,因为如果稍后必须加载大量数据,您将受到惩罚。存储过程是可行的方法。如果需要,可以设置不同的条件,将输入传播到不同的表中。

我认为你需要重新考虑你的情况。你已经知道少处理几张表有多棒了吧?那么,为什么不用一个正确构造的视图来模拟这种情况呢?然后,客户端(你确定是客户端吗?)有时ops表示"客户端",意思是"我们稍后需要提供的报告"),可以拥有数据库可以处理的尽可能多的表。而且,顺便说一下,您仍然可以在视图上执行插入和更新操作。

因为看起来你的数据库和PHP数据结构没有明确的关系,我的直觉是把两者分开,而不是分开。这意味着实际上更倾向于存储过程和触发器(假设上面的方法不可行),这可能更难调试,但这也意味着PHP只需要考虑

"我正在插入这个东西叫做

不是

"天哪,所以这就像,完全紧张,首先我必须与表1>交谈,但我不能忘记表2>,特别是因为那两个可能……等等,轮到我了吗?"

好吧,PHP不是笨蛋(我实际上喜欢这种语言),但是当它实际存储内容时,它也应该尽可能地表现得愚蠢——这不是它的业务

您可能希望编写一个运行这七个查询的存储过程。仔细考虑运行这七个查询需要多少事务。

您认为您需要多久更改一次要运行的查询?

你有访问数据库服务器的权限吗?

你知道什么情况会触发你的触发器吗?

是否有其他进程/应用程序向数据库写入数据?

如果您的查询经常更改,我会使用PHP代码来为您运行查询。

如果您没有访问数据库服务器的权限,您实际上可能不得不使用该方法!您需要权限来编写存储过程和触发器。

如果其他进程正在写入同一数据库,您必须与各自的进程所有者讨论您的需求!否则,数据库中可能出现/更改不需要的数据。

我个人倾向于远离触发器,除非它们调用非常简单的存储过程,并且我100%确定没有人会被触发器所困扰!