性能瓶颈:请高手帮忙破解效率问题!实在没招了。。。

aploo 2009-04-23 07:17:28
性能瓶颈:请高手帮忙破解效率问题!实在没招了。。。

select top 5
[ID],ClassID
from
[News]
Where
[ClassID] In ('282004319361','911060226109','708109267448','850717262639')

Order By
id Desc


性能主要是出在in后面的子类上,如果子类越多,查询速度越慢。
这种情况还有没有其他方法可以改进查询速度。。。。

谢谢了。。。
...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aploo 2009-04-24
  • 打赏
  • 举报
回复
谢谢各位的热心

我测试一下....
JonasFeng 2009-04-23
  • 打赏
  • 举报
回复
同意楼上的,in 后面用临时表,效率会更高。
简单罗列其实效率最差。
  • 打赏
  • 举报
回复

把in后面的classid放在一个临时表中,然后进行连接查询,试试
htl258_Tony 2009-04-23
  • 打赏
  • 举报
回复
select top 5  
[ID],ClassID
from
[News] t
Where
exists(select 1 from 条件表 where ID=t.[ClassID])
Order By
id Desc




select top 5 a.[ID],a.ClassID 
from [News] a
join 条件表 b on a.ClassID=b.ID
Order By
id Desc
htl258_Tony 2009-04-23
  • 打赏
  • 举报
回复
把IN后面的条件放在一个条件表里面,用连接查询,或用exists
如:

select top 5  
[ID],ClassID
from
[News]
Where
exists(select 1 from 条件表 where ID=t.[ClassID])
Order By
id Desc
dj3688 2009-04-23
  • 打赏
  • 举报
回复
in 后面的数据建立临时表(加序列)..

再关联查询会快一些
aploo 2009-04-23
  • 打赏
  • 举报
回复
先谢谢了。。。

22,209

社区成员

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

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