各位,查询分区表和普通查询有什么区别,
分区表的意义是什么?
一般多少数据才建立分区表
分区表的意义是什么?
一般多少数据才建立分区表
解决方案 »
- 求c#怎么能在一个"butoon"实现修改datagirdview中的数据同步保存到oracle中?
- 各位oracle版同志们赐教,救小弟一命...100分。
- oracle启动报错,ora-00204:??????
- 求一SQL语句?
- 作了字符集修改后仍然没有解决的问题,请大家帮忙看看。解决后再送100分
- oracle9i没有pro*c了吗?为什么在网上下载的软件中安装选项没有?
- 来鸟问题--pl*sql
- oracle manager server问题,急急急急急急急急急急急急急急急急急急在线请教各位老大!谢谢
- 如何计算结存数地问题?
- rac的grid infrastructure,在第二个节点执行root.sh报错,
- 求一个存储过程的写法,麻烦各位帮帮忙!
- 求一个存储过程的写法!
2、对大表管理更方便、可伸缩性好、查询效率更好(可以进行分区排除)。
3、没有明确的定义,一般几十万数据至百万数据以上。
更多:http://tianzt.blog.51cto.com/459544/171759
比如一张表T
select * from T
分区表B
select * from B这两个查询有区别吗?分区表该怎么查效率才高呢?
假如 [分区表] 在字段 [createdate] 上进行分区,每个月为一个分区:
2009年6月为分区P200906
2009年7月为分区P200907
2009年8月为分区P200908
执行SQL 使用分区键检索:
select * from 分区表 t where createdate > to_date('2009-07-12','yyyy-mm-dd') and createdate < to_date('2009-08-12','yyyy-mm-dd')执行计划如下,使用分区键进行索引,会自动在数据存在的区进行检索。因为开始区为2,结束区为3,一目了然。
SELECT STATEMENT, GOAL = ALL_ROWS
PARTITION RANGE ITERATOR Partition start=2 Partition stop=3
TABLE ACCESS FULL Partition start=2 Partition stop=3
执行SQL 不使用分区键检索:
select * from 分区表 t where sms_report_date > to_date('2009-07-12','yyyy-mm-dd') and sms_report_date < to_date('2009-08-12','yyyy-mm-dd')执行计划如下:没有使用分区键进行检索,那么则会查询全部的表分区。因为要查询的数据就在2和3分区上,其它的分区数据也被读取了,增大了数据库压力,效率低下。
SELECT STATEMENT, GOAL = ALL_ROWS
PARTITION RANGE ALL Partition start=1 Partition stop=31
TABLE ACCESS FULL Partition start=1 Partition stop=31执行SQL 指定使用分区:
select * from 分区表 partition(P200907) t where sms_report_date > to_date('2009-07-12','yyyy-mm-dd') and sms_report_date < to_date('2009-08-12','yyyy-mm-dd')执行计划如下:
SELECT STATEMENT, GOAL = ALL_ROWS
PARTITION RANGE SINGLE Partition start=2 Partition stop=2
TABLE ACCESS FULL Partition start=2 Partition stop=2