首页 新闻 赞助 找找看

Oracel 分区表 跨分区查询性能

0
悬赏园豆:20 [待解决问题]
1、各位大神,求救!!!
分区后,跨分区的查询效率和不分区的差不多,没有提高
表结构是这样的
create table ZY_SPG_ALERTDATA ( guid NVARCHAR2(36), --标识 sbbh NVARCHAR2(200), --设备编号 jcx NVARCHAR2(50), --检测项 jcz NVARCHAR2(200), --检测值 sbsj DATE, --上报时间 bjms NVARCHAR2(200), --报警描述 sfcl NVARCHAR2(2), --是否处置 czyj NVARCHAR2(300), --处置意见 czsj DATE, --处置时间 bz NVARCHAR2(200), --备注 extend1 NVARCHAR2(200), extend2 NVARCHAR2(200), extend3 NVARCHAR2(200), clr NVARCHAR2(10) )

每分钟都接受传感器的数据,往这张表插数据,每天可以达几万条;要提高查询的效率,小弟对这张表按(sbsj上报时间进行分区,每天分一个区(2016/01/01--2017/01/01 的数据)) 。

可是分区后 查询一段时间(2016-04-01 到 2016-05-01) 的效率并没有提高,可视执行计划中明明是只扫描了 14 个分区呀 为什么效率没有提高呀。。。。。。。求救
问题补充:

现在表里面由130万条数据

蔡先森的主页 蔡先森 | 初学一级 | 园豆:181
提问于:2017-02-23 15:05
< >
分享
所有回答(2)
0

你查询一段时间2016-04-01 到 2016-05-01, 因为你对表分区了, 每个分区在物理上是存放在不同的段上面的, 对于普通表而言, 一个表就是一个段。 你如果是扫描一个分区的表, 效率肯定能提升不少, 因为你只扫描一个段, 减少了扫描的范围。 但是你扫描一个月的分区, 那么要扫描30个段的数据, 效率自然不会有提升。

小海蟹 | 园豆:108 (初学一级) | 2017-02-23 15:36
0

每天几万 你查了一年的 会有1千多万 不知道你想表达什么意思

 

数据库查询的性能 实际上 和扫描的数据量 有直接关系

其次就是 和 查询所需要的步骤有关

一般优化 要么减少扫描的数据量 要么缩短查询的步骤

 

我个人的理解 分区 只能解决物理 io的瓶颈 130w不会出现这个级别的瓶颈 ok? 

如果你的查询 无法通过索引 减少查询条数 每次都扫描 130w 无论怎么优化 都不会有太大效果

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2017-03-01 19:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册