首页 新闻 搜索 专区 学院

SQL语句优化

0
[已解决问题] 解决于 2015-10-15 15:38

请问下:Select * from BuyerRequirement where id in (
select max(id) from BuyerRequirement group by buyerId)

上面这个语句可不可以优化?

sql
MAQNH的主页 MAQNH | 初学一级 | 园豆:184
提问于:2015-10-14 09:22
< >
分享
最佳答案
1

清海扬波 说到的应该可以解决你的问题,SQL语句中最好不用 in 他在执行的效果 和 or 差不多

如果 in()括号中数据比较速度会非常慢

我使用的是MsSQL,2005以后多一个窗体函数,使用更加方便,你可写成:

select * from
(select *,Row_Number() over(Partition by buyerId order by buyerId) RowNum from BuyerRequirement) a where a.RowNum=1

奖励园豆:5
三瑞 | 菜鸟二级 |园豆:232 | 2015-10-14 11:37
其他回答(3)
0

一个表你去ID最大的,你该根据idgroup by,取第一条

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-10-14 10:04
0

Select * from BuyerRequirement a inner join (

select max(id)as id from BuyerRequirement group by buyerId) b on a.id=b.id

要不移地给就会更快。

清海扬波 | 园豆:852 (小虾三级) | 2015-10-14 10:29
-1

Select * from BuyerRequirement where id in (
select max(id) from BuyerRequirement group by buyerId)

 

像你这个,同一个表你这样玩。。。,好吧,先不说你的思路,就按照你的思路的话,你把in改成=号可能效果一下就上去了

茫海 | 园豆:206 (菜鸟二级) | 2015-10-15 10:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册