0

我试图决定是否应该尝试将我的存储过程整合到我的数据库中或编写代码。基本上,我有一个表(分析),它有一个指向另一个表(Urls)的外键。当用户访问某些页面时,第一个表将尝试创建条目。在该表的存储过程(Analytics)中,如果该行已经存在,它将更新,否则创建该行。我正在考虑发回 ID,然后更新另一个表。或者我可以在同一个存储过程中更新另一个表。还会有 2 个其他表在同一页面命中会做类似的事情。

我很矛盾,因为我的面向对象方面希望每个存储过程只做一件事,但我知道这将发生在每个页面上,并且希望尽可能从优化中得到什么。

对多次调用与一次调用数据库的速度差异有何想法。它真的会引起问题吗?

4

1 回答 1

3

对多次调用与一次调用数据库的速度差异有何想法。它真的会引起问题吗?

是的,它当然可以。

对于每个数据库调用,都有连接开销、网络 IO 开销以及数据库服务器和客户端的额外工作——这些都很慢。此外,以这种方式构建存储过程很容易导致您陷入N+1 问题

一般而言,如果您可以构建事物以便在一个查询中尽可能多地完成,那么您的数据库和应用程序将更快、响应更快,因为将昂贵和缓慢的资源使用保持在最低限度。

于 2012-12-26T21:14:52.467 回答