本语句是用于查询表中workid不重复的数据,SQL语句如下
select ID,DepName,WorkId,Counts,UpdateTime,IsValid,IsOnline FROM Dep AS A
where ID IN(SELECT TOP 1 ID FROM Dep WHERE WorkId =A.WorkId and
DepName ='customer' and IsValid=0 ) ORDER BY WorkId
执行计划:

请问索引假脱机是什么情况?如何把这条语句优化使执行效率更高
------解决方案--------------------
换一个
SELECT ID ,
DepName ,
WorkId ,
Counts ,
UpdateTime ,
IsValid ,
IsOnline
FROM ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY workid ORDER BY id ) rn
FROM dep
WHERE DepName = 'customer'
AND IsValid = 0
) a
WHERE rn = 1
------解决方案--------------------
我也写一个,不知对不对,效果如何。
select ID, DepName, WorkId, Counts, UpdateTime, IsValid, IsOnline FROM Dep AS A
inner join (SELECT WorkId WorkId1, min(ID) ID1 FROM Dep WHERE DepName ='customer' and IsValid=0 group by WorkId) AS b on a.WorkId=b.WorkId1 and a.ID=b.ID1
order by WorkId