帮忙看看这句怎么优化一下,现在执行速度奇慢

z_yanjie 2011-05-10 11:31:29
select KDBH, jgclass,
CheckResult = (select top 1 CheckResult from CheckList where KDBH =ww.KDBH and jgclass=ww.jgclass order by CheckTime desc ),
CheckID= (select top 1 CheckID from CheckList where KDBH =ww.KDBH and jgclass=ww.jgclass order by CheckTime desc )
from CheckList ww where datediff(d,CheckTime,getdate())<7 group by KDBH,jgclass

现在执行需要30秒,希望大家给出优化意见
...全文
96 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL777 2011-05-10
  • 打赏
  • 举报
回复
select KDBH, jgclass,
CheckResult, CheckID
from CheckList ww where CheckTime <getdate()-7
and checktime=(select max(checktime) from CheckList where KDBH=ww.KDBH and jgclass=ww.jgclass)

--根据你的数据结构建立适合索引
快溜 2011-05-10
  • 打赏
  • 举报
回复
select distinct KDBH, jgclass into #tb from CheckList where datediff(d,CheckTime,getdate())<7

select a.KDBH,a.jgclass,
CheckResult = (select top 1 CheckResult from CheckList where KDBH =ww.KDBH and jgclass=ww.jgclass
order by CheckTime desc ),
CheckID= (select top 1 CheckID from CheckList where KDBH =ww.KDBH and jgclass=ww.jgclass
order by CheckTime desc )
from #tb a
drop table #tb
Mr_Nice 2011-05-10
  • 打赏
  • 举报
回复
SELECT  ww.KDBH ,
ww.jgclass ,
CheckResult = T.CheckResult ,
CheckID = T.CheckID
FROM CheckList ww
INNER JOIN ( SELECT TOP 1
CheckID ,
CheckResult ,
KDBH ,
jgclass
FROM CheckList
ORDER BY CheckTime DESC
) T ON T.KDBH = ww.KDBH
AND T.jgclass = ww.jgclass
WHERE DATEDIFF(dd, CheckTime, GETDATE()) < 7
GROUP BY ww.KDBH ,
ww.jgclass ,
T.CheckResult ,
T.CheckID


KDBH,jgclass 上加索引,然后Try
AcHerat 2011-05-10
  • 打赏
  • 举报
回复

select a.KDBH,a.jgclass,b.CheckResult,b.CheckID
from CheckList a left join CheckList b on a.KDBH =b.KDBH and a.jgclass=b.jgclass
where datediff(dd,a.CheckTime,getdate())<7
and not exists(select 1 from CheckList where KDBH = b.KDBH and jgclass = b.jgclass and CheckTime > b.CheckTime)

--试试看!
Mr_Nice 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 z_yanjie 的回复:]
select KDBH, jgclass,
CheckResult = (select top 1 CheckResult from CheckList where KDBH =ww.KDBH and jgclass=ww.jgclass order by CheckTime desc ),
CheckID= (select top 1 CheckID fro……
[/Quote]


Ctrl + L 看执行计划。
kingtiy 2011-05-10
  • 打赏
  • 举报
回复
 where CheckTime<getdate()-7 --不要在列上加函数

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧