我有一个存储过程,其中创建了一个临时表。
有16种不同的select语句,用于通过一次使用4个表上的连接将数据插入临时表。
新要求是在条件基于某些输入参数的情况下应用更多。
我的问题是:
我现在有两个选择:
在将数据插入临时表时,在每个select语句的where子句中应用条件。
插入数据时不应用任何条件,但最后从临时表中删除数据(不需要的数据)。
第二种方法看起来很简单,但我在考虑性能问题,因为最初会将不必要的数据插入其中,但每次都会应用多个过滤器。
任何人都可以指导我应该使用哪种方法。
基本上在过滤,插入,删除之间需要更多时间。
所有表格中都有数千行。
答案 0 :(得分:1)
如果没有确切的细节,很难回答,但一般来说,第一种方法听起来更好。
第二种方法意味着您将进行两次I / O(可能,取决于具体条件) - 一次将数据复制到临时表中,再次删除它。如果您的数据集很大,这将是相当可观的。
答案 1 :(得分:0)
你的第一种方法更好。
如果选择花费时间,则应优化选择以使其使用索引。
其次,你有一个大表,然后你从中选择了一些记录,并没有解决你的问题。