为了能够管理非常大的数据量,oracle建立了分区表(partitioned table)和分区索引(partitioned idex)。
通过使用分区表,允许将一张大表的数据分布到多个表分区段,通过使用分区索引,允许将一个大索引的数据分布到多个索引分区段。使用分区特征时,不同区彼此独立,从而提高表的可用性和性能。
1. 建立分区表
分区表是指按照特定逻辑划分大表,最终将其数据部署到几个相对较小的分区段中。执行sql语句访问分区表时,服务器进程可以直接访问某个分区段,而不需要访问整张表的所有数据,从而降低磁盘IO。
2. 范围分区
按照列值将表列的数据分布到不同的分区段中。如果表的数据可以按照逻辑访问进行划分,并在不同范围内分布比较均衡,那么可以使用范围分区。
建立分区表:
create table sales(
customer_id number(3),
sales_amount number(10,2),
sales_date DATE
)partition by range(sales_date)(
partition p1 values less than('01-APR-2010')
tablespace partition_tbs01,
partition p2 values less than('01-JUL-2010')
tablespace partition_tbs02,
partition p3 values less than('01-OCT-2010')
tablespace partition_tbs03,
partition p4 values less than('01-JAN-2011')
tablespace partition_tbs04
)
3. 在范围分区表上插入数据
在使用INSERT语句为范围分区表插入数据时,必须为分区列提供数据,并且分区列的数据必须符合相应的分区范围。当在分区表SALES上执行INSERT操作时,Oracle会根据sales_date值的范围在相应分区上插入数据。
4. 查询表的所有语句,与普通表的查询没有任何差别。
5. 查询某个分区的数据
建立分区表后,通过在表明后指定分区名,可以显示分区的所有数据。
SELECT * FROM sales PARTITION(p1);