sql - 重新使用选择子查询/结果

标签 sql sql-server query-optimization union rdbms

我正在尝试优化使用冗余查询 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/

相关文章:

mysql - 别名导致 where 子句出错 - MySQL

python - 使用 PyMSSQL 执行引用链接服务器的存储过程时出错

mysql - 数据库 - 如何正确建立索引以快速执行 mysql 中的大数据

mysql - 如何使用单独的姓氏和名字进行全名搜索?

javascript - 从 JavaScript 将日期传递给 ADODB.Command 参数

sql - 选择一周的记录

c# - 在这种情况下我应该使用什么正确的数据类型?

SQL - 如何检索一列中排名最高的行,而另一列中具有多个重复行

sql - 如果oracle数据库中的某个表是空表统计的,那么如何恢复该表的原始统计信息呢?

sql - 如何优化复杂查询?