SQL语句中 group by 的 优化问题 在线等

starwang 2007-12-11 03:55:41
有一个查询
SELECT bid,logid FROM BCARDTABLE
WHERE bid IN
(SELECT MAX(bid) FROM BCARDTABLE WHERE ENABLEFLAG=0 GROUP BY logid)
执行效率很低,大约5秒可以查询一次1万条记录的表。
不知道该怎么优化,
改写为
select a.bid,logid
from
(select bid,logid from BCARDTABLE) a,
(SELECT MAX(bid) bid FROM BCARDTABLE ENABLEFLAG=0 GROUP BY logid ) b
where a.blackid=b.blackid
效果一样
看了一下,主要是SELECT MAX(bid) FROM BCARDTABLE WHERE ENABLEFLAG=0 GROUP BY logid 执行速度很慢,感觉可能是group by 的原因。
请问是否还有别的优化方法。
谢谢!
...全文
439 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
starwang 2007-12-12
  • 打赏
  • 举报
回复
谢谢大家!
lijianfeng_haier 2007-12-11
  • 打赏
  • 举报
回复
SELECT a.bid, logid
FROM BCARDTABLE a,
(SELECT MAX(bid) bid FROM BCARDTABLE ENABLEFLAG = 0 GROUP BY logid) b
WHERE a.blackid = b.blackid
kinglht 2007-12-11
  • 打赏
  • 举报
回复
SELECT max(bid),logid FROM BCARDTABLE where ENABLEFLAG=0
group by logid
这个就应该可以了吧,你上面访问两遍肯定要慢啊
kinglht 2007-12-11
  • 打赏
  • 举报
回复
SELECT bid,logid FROM BCARDTABLE a
WHERE exists
(select 'a' from
(SELECT MAX(bid) FROM BCARDTABLE WHERE ENABLEFLAG=0 GROUP BY logid) t
where a.bid=t.bid)
试试看,实在不行只能对表数据量做优化了!
kaoziji 2007-12-11
  • 打赏
  • 举报
回复
把explain plan贴出来看看
starwang 2007-12-11
  • 打赏
  • 举报
回复
请给个意见!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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