oracle的in子查询优化问题

blue air 2016-07-18 09:06:17
在一个查询中,返回某两项在另一张表存在的记录,使用了in子查询,同时又使用字符串拼接,执行效率太差,请教高手,如何优化?

ryda表中,id和ryid为联合主键,id为用来区别相同ryid的记录序号,此句是要取出每个ryid记录中id序号最大的那些记录。

语句:
select * from ryda a
where a.id||a.ryid in (
select max(b.id)||b.ryid from ryda b group by b.ryid)


...全文
545 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue air 2016-07-20
  • 打赏
  • 举报
回复
2楼正解!多谢!
ghx287524027 2016-07-19
  • 打赏
  • 举报
回复
试试这个呢
select * from (
 select a.*,dense_rank() over(partition by a.ryid order by a.id desc) rn from ryda a
)
where rn=1
里面的 ‘ * ’ 最好可以用具体的列名代替
嘚嗒搬运工 2016-07-19
  • 打赏
  • 举报
回复
看看这个能不能提高下效率:
ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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