重构具有许多常见INNER JOINS和列的SQL语句

时间:2014-05-06 22:02:01

标签: sql sql-server sql-server-2008 tsql

我需要有关如何重新考虑以下SQL表达式的建议。如您所见,除col_N之外的所有选定列都相同。加上除2个子查询中的最后一个之外的所有内连接都是相同的。这只是我的代码片段,所以我没有在查询中包含我的WHERE子句。仅供参考 - 这是SSRS报告使用的存储过程的一部分,由于数千条记录,性能对我来说很大:

SELECT col_A
       , col_B, col_C,...
       , '' As[col_N]
FROM table_A 
INNER JOIN table_B 
INNER JOIN table_C
INNER JOIN table_D1

UNION

SELECT col_A
       , col_B, col_C,...
       , (select E.field_2 from table_E AS E where D2.field_1 = E.field_1 AND A.field_1 = E.field_2)     AS [col_N]

FROM table_A as A
INNER JOIN table_B 
INNER JOIN table_C
INNER JOIN table_D2 as D2 

1 个答案:

答案 0 :(得分:0)

Jean首先建议通过加入A,B和C来创建视图。我通过加入ABC创建了一个临时表,然后使用它来实现显着的性能提升(查询时间减少到几千条记录的一半)!