如何重新编写以下逻辑以提高性能?详细描述

时间:2016-05-02 14:39:29

标签: sql sql-server performance query-performance sqlperformance

我有一个基本上实现以下逻辑的代码

select something
from few tables
where not exists (select query with some logic, say L1)

union all

select query with logic L1

如您所见,具有逻辑L1的选择查询正在运行两次。这是一个非常大的逻辑,可能需要一些时间来运行。反正是否重新格式化代码以使执行更好?

2 个答案:

答案 0 :(得分:1)

你可以使用CTE。 https://msdn.microsoft.com/en-us/library/ms175972.aspx 例如,像那样的东西;

;With L1 as  (Select query with some logic, say L1)
Select Something 
from few tables
where not exists (select * from L1)
union all
Select * from L1

答案 1 :(得分:0)

为什么不把它放在一个声明中呢?不知道结构是什么,但这里的想法是:

Select 
Something1
,Something2
,Something3
,Case When L1 Is Not Null 'Case1'
            Else 'Case2'
        End AS Status
FROM Some Table or view