我应该创建存储的函数/过程还是保留查询?

时间:2017-10-27 17:36:02

标签: sql algorithm db2 logic

这可能是提出这个问题的错误点,所以请原谅我。

所以我有一个400行长的DB2查询,但是它做了很多单独的计算,以确定客户是否有利可图,而不是通过车道和终端/交付地点的LTL出货量。

我的问题一般来说,在查询表单中继续执行此操作或通过存储函数传递某些算法会更快吗?它按行项目运行OR报告,因此在任何给定时间段内,每个客户可能有数千行/账单。

我想我只是在寻找一些与我有不同观点或经验的美丽人士的建议。

感谢。

- EDIT-- 我正在努力提高速度,当我为1个客户运行它的速度足够快但是当我在公司范围内运行时,一个月的数据需要大约半小时(大约4万个账单)。 它实际上只处理4个表,大多数只是调用1列数据。在最宽的点上,它的宽度约为40列,但可以浓缩,我只是希望能够在它们组合之前看到计算结果,并以更清晰的格式进行总结。我确实使用With循环作为()然后只是将那个临时表用于最终输出。

1 个答案:

答案 0 :(得分:0)

就架构而言,打破复杂性可能会更好,您可以在更小的可维护模块中使用。在有意义的地方使用存储的函数或存储过程。这也为 SQL 提供了一些可重用的代码库。使用像JOIN这样的 INNER JOIN, LEFT OUTER JOIN, FULL OUTER JOIN 等将结果拉到一起,因为这比订单项<> 更快 / strong>在 FOR 循环和 CURSOR 中。正确的索引也可以影响性能。虽然使用这种方法可能会遇到麻烦,但嵌套存储过程会被调用数百万次。每个上下文更改或过程调用只有很小的开销。如果需要,将结果存储在本地临时表中并加入它们以获得性能提升,如果逻辑正在提取大量结果并且您有多阶段数据,等等。希望这些提示有所帮助。