分区表查询问题

[复制链接]
查看11 | 回复7 | 2011-2-18 11:42:49 | 显示全部楼层 |阅读模式
有分区表a,以天为单位分区,分区表名如 p20110901,
现在想建一个视图,查询当天的表a分区,比如今天就是 select * from a partition (p20110901)
明天的话,select * from a partition (p20110902),
不知道怎么样写这个视图才能实现。
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
create view
where day=:day
ORACLE会自动根据条件进行分区清除。
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
原帖由 outdo 于 2011-9-1 10:14 发表
create view
where day=:day
ORACLE会自动根据条件进行分区清除。

:day 可以考虑用trunc(sysdate)
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
原帖由 outdo 于 2011-9-1 10:15 发表

:day 可以考虑用trunc(sysdate)


理解了,谢谢!
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
原帖由 outdo 于 2011-9-1 10:15 发表

:day 可以考虑用trunc(sysdate)


试了下,还是有区别的
select * from a partition(p20110901) 能很快出来
select * from a where day=trunc(sysdate) 要看索引情况
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
原帖由 xm-YY 于 2011-9-1 10:31 发表


试了下,还是有区别的
select * from a partition(p20110901) 能很快出来
select * from a where day=trunc(sysdate) 要看索引情况


我的目的是每天只对 表a当天分区的数据操作,
如果用select * from a where day=trunc(sysdate) 这样,还是要走全表。
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
原帖由 xm-YY 于 2011-9-1 10:38 发表

我的目的是每天只对 表a当天分区的数据操作,
如果用select * from a where day=trunc(sysdate) 这样,还是要走全表。


正常情况下,使用分区列作为条件是可以分区清除的。
请提供两个语句的执行计划。
另外,为什么要建全局索引?
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
原帖由 outdo 于 2011-9-1 10:45 发表

正常情况下,使用分区列作为条件是可以分区清除的。
请提供两个语句的执行计划。
另外,为什么要建全局索引?


对的,不好意思,刚才试的时候,有个地方弄错了。
条件用分区字段,确实会分区清除的。
谢谢!
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行