我试图决定是否应该尝试在我的数据库中整合存储过程或执行代码。基本上,我有一个表(Analytics)具有另一个表(Urls)的foriegn键。当用户访问某些页面时,第一个表将尝试创建该条目。在此表的存储过程(Analytics)中,如果该行已存在,则会以其他方式更新,创建该行。我正在考虑发回ID,然后更新另一个表。或者我可以在同一存储过程中更新另一个表。还有另外两个表在同一页面中命中将执行类似的操作。
我之间存在冲突,因为我的面向对象方希望每个存储过程只做一件事,但我知道这将在每个页面上发生,并且如果可能的话,我希望得到我可以从优化中得到的东西。
对多次通话的速度差异与对数据库的一次调用有什么想法。这真的会引起问题吗?
答案 0 :(得分:3)
对多次通话的速度差异与对数据库的一次调用有什么想法。这真的会引起问题吗?
是的,当然可以。
对于每个数据库调用,都存在连接开销,网络IO开销以及数据库服务器和客户端的额外工作 - 这些都很慢。此外,以这种方式构建存储过程可以很容易地引导您进入N+1 problem。
一般情况下,如果您可以在一个查询中尽可能地构建内容,那么您的数据库和应用程序将更快,响应更快,因为资源使用成本高且速度慢。最低限度。