SQL Server将自联接更改为具有范围的CTE

时间:2019-02-28 13:24:47

标签: sql sql-server

我有一个很好的基于范围的左联接的自联接查询。在上一时期,查询的性能开始下降,我正尝试通过将其迁移到CTE或其他任何解决方案来优化此查询。

select distinct Main.Id, Main.Name, Main.PolicyRef, Main.ExtCategoryId, Main.NodeLevel, Main.Description
from tbl1 as Main left join
     tbl1 as Cat
     on (Cat.LeftN between Main.LeftN and Main.RightN and Cat.RightN between Main.LeftN and Main.RightN
       OR
        Cat.LeftN between Main.RightN and Main.LeftN and Cat.RightN between Main.RightN and Main.LeftN
      ) and cat.Id=main.Id
where Cat.Id in (select CategoryRef from tbl2 where AccountRef=@AccountRef and ItemRef=@MId)


 set statistics io on

表“工作表”。扫描计数0,逻辑读0,物理读0,预读0,lob逻辑读0,lob物理读0,lob预读0。

表“ tbl1”。扫描计数1,逻辑读为19903,物理读为0,预读为0,lob逻辑读为0,lob物理读为0,lob预读为0。

表“ tbl2”。扫描计数1,逻辑读123,物理读0,预读0,lob逻辑读0,lob物理读0,lob预读0。

0 个答案:

没有答案