我对合并到CTE 与合并到表的性能存在疑问。
我的情况如下:
我在现有存储过程中遇到了一个问题,该过程负责将数据从暂存源表合并到表中。目标表有大约2000万条记录。
合并到 CTE 中,该CTE是按日期范围过滤的目标表的子集。此日期范围与源表的日期范围匹配。但是,由于逻辑实现不正确,源表有时也会包含超出日期范围的数据。这会导致将不必要的重复数据插入目标表。
现在已更正了存储过程中的逻辑,并且有望通过此更改解决此问题。但是,为确保不再发生此类问题,是否建议将其合并到表中而不是CTE中?考虑到目标表的大小(约2000万行),性能的权衡是什么?考虑到性能的观点,合并到表中的利弊是什么?
答案 0 :(得分:0)
Microsoft建议不要使用CTE作为目标。
使用WITH子句从中过滤出行 源表或目标表。此方法类似于指定 ON子句中的其他搜索条件,可能会产生不正确的信息 结果。我们建议您避免使用此方法或进行测试 在实施之前进行彻底的研究。
从性能的角度来看,我认为这不会有所作为。我从来没有测试过。