[英]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.