我有一个创建临时表的存储过程。
有16个不同的select语句,用于通过一次在4个表上使用联接将数据插入临时表。
新的要求是在基于某些输入参数的条件下应用更多的条件。
我的问题是:
我现在有两个选择:
在将数据插入临时表时,在每个select语句中的where子句中应用条件。
插入数据时不要应用任何条件,但最后从临时表中删除数据(不需要数据)。
第二种方法看起来很简单,但我考虑的是性能问题,因为最初不必要的数据会被插入其中,但是每次都会应用多个过滤器。
有人能告诉我应该用哪种方法吗。
基本上是在过滤、插入、删除之间,这需要更多的时间。
所有的表都有上千行。
最佳答案
没有确切的细节很难回答,但一般来说,第一种方法听起来更好。
第二种方法意味着您将执行(可能,取决于确切的条件)两次I/O—一次将数据复制到临时表中,然后再次将其删除。如果您的数据集很大,这将是相当可观的。