查看: 1961|回复: 13

[性能调整] sql优化

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2017-8-25 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有两个表t1 5000w 行数据,t2 5000w 行数据,按天分区,一天大概5w数据,俩个表都是这样的增量,分区键值TM    to_date(sysdate,‘yyyy-mm-dd hh24:mi:ss’)现在发现一个问题
我做 关联查询,如:select t1.a,t2.b from t1,t2 where t1.id=t2.id and t1.TM>=to_date('2017-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')
and t1.TM<to_date('2017-08-24 00:00:00','yyyy-mm-dd hh24:mi:ss')  and t2.TM>=to_date('2017-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')
and t2.TM<to_date('2017-08-24 00:00:00','yyyy-mm-dd hh24:mi:ss') ;
这样的查询会走好久,执行计划,显示,走的是分区索引TM,也就是造成了5w*5w数据的一个索引扫描,所以耗时,
我想问的是,这个 明显是 两个分区的 全扫描关联更快,有啥办法能让oracle 更智能一点吗?毕竟我需要整个分区表的数据,不需要走索引,对于条件来说,确实索引区别度高
但那不是最好的,我要的是个时间段的,数据,有没有办法让统计信息,自动计算,一整天的统计信息,别做那么洗的区分的统计。
除了hint ,有没有好的方法,从,不改应用,不改代码,不固定执行计划,方面解决


论坛徽章:
2
蒙奇·D·路飞
日期:2017-06-29 11:18:49山治
日期:2017-09-11 10:07:52
2#
发表于 2017-8-25 16:04 | 只看该作者
如果是12c可以把分区用in-memory column store

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期: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
3#
发表于 2017-8-26 11:45 | 只看该作者
把执行计划列出来,

使用道具 举报

回复
论坛徽章:
0
4#
 楼主| 发表于 2017-8-28 11:37 | 只看该作者
16        -----------------------------------------------------------------------------------------------------------------------------------
17        | Id  | Operation                                     | Name              | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
18        -----------------------------------------------------------------------------------------------------------------------------------
19        |   0 | SELECT STATEMENT                              |                   |       |       |     7 (100)|          |       |       |
20        |*  1 |  FILTER                                       |                   |       |       |            |          |       |       |
21        |   2 |   NESTED LOOPS                                |                   |     1 |   115 |     7   (0)| 00:00:01 |       |       |
22        |   3 |    NESTED LOOPS                               |                   |     1 |   115 |     7   (0)| 00:00:01 |       |       |
23        |   4 |     PARTITION RANGE ITERATOR                  |                   |     1 |    63 |     4   (0)| 00:00:01 |   KEY |   KEY |
24        |*  5 |      TABLE ACCESS BY LOCAL INDEX ROWID BATCHED| T1                |     1 |    63 |     4   (0)| 00:00:01 |   KEY |   KEY |
25        |*  6 |       INDEX RANGE SCAN                        | IDX_T1_P          |     1 |       |     3   (0)| 00:00:01 |   KEY |   KEY |
26        |   7 |     PARTITION RANGE ITERATOR                  |                   |     1 |       |     2   (0)| 00:00:01 |   KEY |   KEY |
27        |*  8 |      INDEX RANGE SCAN                         | IDX_T2_SP         |     1 |       |     2   (0)| 00:00:01 |   KEY |   KEY |
28        |*  9 |    TABLE ACCESS BY LOCAL INDEX ROWID          | T2                |     1 |    52 |     3   (0)| 00:00:01 |     1 |     1 |
29        -----------------------------------------------------------------------------------------------------------------------------------

使用道具 举报

回复
论坛徽章:
0
5#
 楼主| 发表于 2017-8-28 11:37 | 只看该作者
ZALBB 发表于 2017-8-26 11:45
把执行计划列出来,

计划已发

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期: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
6#
发表于 2017-8-28 13:27 | 只看该作者
语句和完整的执行计划,怎么不发全?

使用道具 举报

回复
论坛徽章:
3
山治
日期:2017-04-15 13:14:25娜美
日期:2017-04-25 17:50:08娜美
日期:2018-03-23 12:49:34
7#
发表于 2017-8-28 16:21 | 只看该作者
一天有5w数据的话,走hash索引会更好些。执行计划的评估返回行数差异比较大吧,试下收集下表的统计信息看看

使用道具 举报

回复
论坛徽章:
0
8#
 楼主| 发表于 2017-8-31 16:06 | 只看该作者
ZALBB 发表于 2017-8-28 13:27
语句和完整的执行计划,怎么不发全?

sql敏感

使用道具 举报

回复
论坛徽章:
0
9#
 楼主| 发表于 2017-8-31 16:07 | 只看该作者
13825186737 发表于 2017-8-28 16:21
一天有5w数据的话,走hash索引会更好些。执行计划的评估返回行数差异比较大吧,试下收集下表的统计信息看看

统计信息最新,
主要问题是,t1,t2 分去表关联,按天关联,时间索引,是按秒区分,cardinality  没有问题,选择率也没有问题,关键是,这样不合理,有没有好办法

使用道具 举报

回复
论坛徽章:
0
10#
 楼主| 发表于 2017-8-31 16:08 | 只看该作者
ZALBB 发表于 2017-8-28 13:27
语句和完整的执行计划,怎么不发全?

有些 字段 太敏感

使用道具 举报

回复

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

本版积分规则 发表回复

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