查看: 5893|回复: 24

[性能调整] 130万条与 2亿7千万 关联查询 优化问题

[复制链接]
论坛徽章:
0
发表于 2010-10-29 11:07 | 显示全部楼层 |阅读模式
A表 130万条数据,
B表 2亿7千万条数据,

select *
form A a join B b on (a.id = b.a_id)
order by a.id

查询时间在1分钟,如果去掉 order by,group by 等语句速度不到一秒,已经建立index,请问这个是哪里的问题呢?
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2010-10-29 11:10 | 显示全部楼层
原帖由 xiaocong1001 于 2010-10-29 11:07 发表
A表 130万条数据,
B表 2亿7千万条数据,

select *
form A a join B b on (a.id = b.a_id)
order by a.id

查询时间在1分钟,如果去掉 order by,group by 等语句速度不到一秒,已经建立index,请问这个是哪里的问题呢?


去掉ORDER BY, CBO就不需要排序,用NL可立即响应,边取边返回数据。 多了ORDER BY,系统得等数据取全后,排序,才能返回。

使用道具 举报

回复
招聘 : Java研发
认证徽章
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2010-10-29 11:30 | 显示全部楼层
脱离业务优化sql没有意义

使用道具 举报

回复
论坛徽章:
11
2010新春纪念徽章
日期:2010-03-01 11:08:27SQL大赛参与纪念
日期:2011-04-13 12:08:172010广州亚运会纪念徽章:空手道
日期:2011-03-08 15:29:592011新春纪念徽章
日期:2011-02-18 11:43:362010广州亚运会纪念徽章:台球
日期:2011-01-26 10:41:28数据库板块每日发贴之星
日期:2010-12-10 01:01:022010广州亚运会纪念徽章:网球
日期:2010-12-09 13:11:342010广州亚运会纪念徽章:篮球
日期:2010-12-06 14:28:04辩论纪念章
日期:2010-11-15 10:46:13ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52
发表于 2010-10-29 11:38 | 显示全部楼层
13OW你一秒就能返回??
仅仅返回了前面那么几条吧......

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-10-29 11:41 | 显示全部楼层
在plsql developer里那当然快啊, first rows而已

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2010-10-29 11:42 | 显示全部楼层
去掉ORDER BY, CBO就不需要排序,用NL可立即响应,边取边返回数据。 多了ORDER BY,系统得等数据取全后,排序,才能返回。


我可以去掉 order by 但是 必须加入 group by 因为 b表中 需要多一列 汇总。还是速度慢的不行。

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2010-10-29 11:43 | 显示全部楼层
我用的是oracle sql developer 客户端。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-10-29 11:45 | 显示全部楼层
原帖由 xiaocong1001 于 2010-10-29 11:43 发表
我用的是oracle sql developer 客户端。

客户端都有优化,你返回多少行啊?

使用道具 举报

回复
论坛徽章:
70
ITPUB元老
日期:2007-07-19 08:57:15乌索普
日期:2016-06-24 14:29:16沸羊羊
日期:2015-02-12 09:15:562014年世界杯参赛球队:喀麦隆
日期:2014-05-20 16:06:36马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11迷宫蛋
日期:2013-04-24 13:52:55茶鸡蛋
日期:2013-04-19 13:54:282013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2013-02-19 14:05:00
发表于 2010-10-29 11:46 | 显示全部楼层
group by 一样要排序 分组

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2010-10-29 11:48 | 显示全部楼层
原帖由 xiaocong1001 于 2010-10-29 11:42 发表


我可以去掉 order by 但是 必须加入 group by 因为 b表中 需要多一列 汇总。还是速度慢的不行。


那能不能再限制一些条件,总不会每次都从2亿条数据里全取吧?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表