重构SQL以避免重复连接

时间:2014-10-31 21:16:35

标签: sql-server join

我需要有关如何重新调整SQL Server查询以提高性能的建议。正如你所看到的,我正在重复加入,并希望避免它。这只是我的代码片段,所以我不包括JOIN ON, WHERE

任务是将一个人拥有的所有房屋显示为一个连续的字符串,而不是一个人拥有的每个房子的一行。数据库模式以这种方式组织,需要我做多个连接以获取我需要的信息,不幸的是架构不会改变。

select   
distinct View1_outer.ID as PersonID  
, stuff
    (  
        (select ', ' + Name  
            from View1 View1_inner  
            inner join View2 View2_inner  
            inner join View3 View3_inner  
            inner join View4 View4_inner   
            where View1_inner.ID = View1_outer.ID  
            for XML path('')  
        )  
    ,1,2,' ') as Houses  
from View1 View1_outer  
inner join View2 View2_outer   
inner join View3 View3_outer  
inner join View4 View4_outer   

where View1_outer.ID = 'XXX'

1 个答案:

答案 0 :(得分:0)

这是重写初始查询的一种方法。我不认为我需要在外部查询中重复连接。

选择
不同的View1_outer.ID作为PersonID
, 东西     (
        (选择','+名称
            来自View1 View1_inner
            内连接View2 View2_inner
            内连接View3 View3_inner
            内连接View4 View4_inner
            其中View1_inner.ID = View1_outer.ID
            for XML path('')
        )
    ,1,2,'')作为房屋

来自View1 View1_outer的

其中View1_outer.ID ='XXX'