楼主: xgghxkhuang

纸上谈sql优化大表nl hj比较问题

[复制链接]
论坛徽章:
0
11#
发表于 2014-11-7 11:02 | 只看该作者
将120万数据通过index的方式查询到临时表,然后让其他表跟120万的临时表进行hash join。

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
12#
发表于 2014-11-7 11:24 | 只看该作者
没看到你的sql和执行计划,大家只是猜着说而已,在不了解你的具体需求前,说什么都没太大实际意义。
另外,你一下子查出4kw数据干吗用呢?

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
13#
发表于 2014-11-7 13:18 | 只看该作者
如果全表扫已经不能再优化,那么到了这个份儿上,已经不是nl还是hj的问题了。如果你是rac,hash智能匹配连接能好些。
还得结合业务,想方法来改写这个sql。
另外,是否考虑过垂直分区?

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
14#
 楼主| 发表于 2014-11-7 21:27 | 只看该作者
sqysl 发表于 2014-11-7 11:24
没看到你的sql和执行计划,大家只是猜着说而已,在不了解你的具体需求前,说什么都没太大实际意义。
另外, ...

查sql性能发现主要是由于一个大表b引起的,b表有十多亿数据未分区,id上有索引,
主表120万数据,左关联b表,想调整这个sql

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
15#
 楼主| 发表于 2014-11-7 21:33 | 只看该作者
xgghxkhuang 发表于 2014-11-7 21:27
查sql性能发现主要是由于一个大表b引起的,b表有十多亿数据未分区,id上有索引,
主表120万数据,左关联 ...

今天实验了全表扫瞄加hash61分钟,nestloop加索引基本没回馈了,预估4个小时,并行主表加索引加并行nestloop45分钟,全表扫描加hashjoin加并行12分钟,原来SQL就几个表关联然后sumgroupby,就因为这个十亿表慢。所以要调整一下。

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
16#
 楼主| 发表于 2014-11-7 21:34 | 只看该作者
xgghxkhuang 发表于 2014-11-7 21:33
今天实验了全表扫瞄加hash61分钟,nestloop加索引基本没回馈了,预估4个小时,并行主表加索引加并行nestl ...

试验了还是hash加并行快,周一上SQL和执行计划

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
17#
 楼主| 发表于 2014-11-7 21:37 | 只看该作者
xgghxkhuang 发表于 2014-11-7 21:34
试验了还是hash加并行快,周一上SQL和执行计划

请教一个问题mergejoin的执行计划遇到filter sort join是每次都扫描数据去过滤吗,如果sortjoin上面有索引只是优化了sort,如果表小,其实sort代价不大,没有必要建立索引对不?

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
18#
 楼主| 发表于 2014-11-7 21:41 | 只看该作者
udfrog 发表于 2014-11-7 13:18
如果全表扫已经不能再优化,那么到了这个份儿上,已经不是nl还是hj的问题了。如果你是rac,hash智能匹配连接 ...

能介绍一下partition wise join吗?可以一试验,主表有个日期字段过滤,原表1200万,日期过滤后120万,是否可以建立子分区用上?已经在翠花的书上听说过没实际用过。

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
19#
 楼主| 发表于 2014-11-7 21:43 | 只看该作者
加并行的时候,如何稳定执行计划,包括链接顺序和方式,最好固定下来,就怕bind窥探,所以固定下来。

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
20#
 楼主| 发表于 2014-11-7 21:44 | 只看该作者
dingjun123 发表于 2014-11-7 10:46
hash join要增大pga啊,返回行数很多,基本nl没有啥优势了
oracle有分区智能连接,partition wise join... ...

现在是hash加并行,设置session级别参数管用吗?

使用道具 举报

回复

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

本版积分规则 发表回复

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