[英]Improve performance of the query
我的查詢花了很長時間。
select distinct JobName,
ValidationType,
AppName,
Result,
ResultType,
ErrorWarningDetails,
CvtStartDateTime
from contentvalidationjobdetails with (nolock)
where appname=@AppName
and result=@Result
and (cast(cvtstartdatetime as date) > @Date )
and concat(Jobname,validationtype) not in (
select concat(jobname,validationtype)
from Contentvalidationjobdetails with (nolock)
where appname = @AppName
and CVTStartDateTime = (
select top 1 teststartdatetime
from contentvalidation
where appname=@AppName
and Teststartdatetime<@Date
order by teststartdatetime desc
)
)
我知道concat(jobname,validationtype)需要時間。 如何處理。
將查詢放在FROm節中僅執行一次(而不是針對WHERE中的每一行)。 添加外部聯接,僅保留沒有聯接的記錄。
select distinct JobName,
ValidationType,
AppName,
Result,
ResultType,
ErrorWarningDetails,
CvtStartDateTime
from contentvalidationjobdetails with (nolock)
LEFT OUTER JOIN (
select concat(jobname,validationtype) cnt
from Contentvalidationjobdetails with (nolock)
where appname = @AppName
and CVTStartDateTime = (
select top 1 teststartdatetime
from contentvalidation
where appname=@AppName
and Teststartdatetime<@Date
order by teststartdatetime desc) sub ON concat(Jobname,validationtype)=sub.cnt
where appname=@AppName
and result=@Result
and (cast(cvtstartdatetime as date) > @Date ))
HAVING sub.cnt is null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.