我正在尝试优化使用冗余查询 block 的查询速度。我正在尝试使用下面的查询在 sql server 2008 中进行按行联接。
Select * from
(<complex subquery>) cq
join table1 t1 on (cq.id=t1.id)
union
Select * from
<complex subquery> cq
join table2 t2 on (cq.id=t2.id)
<complex subquery>
两个联合子查询片段完全相同,只是我们需要将其与多个不同的表连接以获得相同的列式数据。
有什么方法可以重写查询以使其更快,而不使用临时表来缓存结果?
最佳答案
为什么不使用临时表并看看这是否可以提高执行统计数据?
在某些情况下,查询优化器会自动向缓存子查询的计划添加一个假脱机,但这基本上只是一个临时表。
您是否检查过当前计划以确保查询实际上被多次评估?
关于sql - 重新使用选择子查询/结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4313467/