我有一个存储过程,可以进行大量的解析和插入。它是从特定表中每行的前端触发的。
为了模块化和可读性,我的任务是更改过程,以便在一个存储过程中进行解析并插入另一个存储过程。
现在我处于两难境地,我认为对我来说这样做的最好方法是拆分存储过程并从原始存储过程中调用不同的存储过程。通过这样做,更改代码所需的时间非常少,但我关心的是对数据库的调用次数。
如果有N行,那么之前对数据库的调用次数为N.但现在基于新方法,调用次数将为2 * N.
另一种方法是将所有表数据写入临时表,然后执行必要的操作。这样可以减少对数据库的调用,但是它会导致id
的另一个问题。改变的时间可能需要几个小时。
我的问题是,如果我要保留原始逻辑并将它们分成多个存储过程,那么它对性能的影响有多大?
前端的行数通常不会超过100。
感谢。
答案 0 :(得分:1)
就像我在评论中说的那样,它会损害表现;没有代码,多少确切难以分辨。
如果你真的需要重构它,请尝试将一些代码提取到内联表值函数中。不是多语种TVF,不是标量TVF,不是存储过程,而是内联TVF。
原因是优化器会将内联TVF视为视图并将其合并并与外部查询一起优化,因此它有很好的机会进行正确优化。