如何创建为单个分区创建索引

如何创建为单个分区创建索引,第1张

设想有一个分区表,上面建了一个local index,如果只是想在最近的分区上使用索引,而老的分区上不需要创建索引,这样的功能只有在12c中提供,而此时就可以使用这个unusable特性,先创建local索引并将其状态置为unusable,然后将需要使用的索引分区进行rebuild,从而实现了针对单个分区创建索引的目的。

1.添加PRIMARY KEY(主键索引)

mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

2.添加UNIQUE(唯一索引)

mysql>ALTER TABLE `table_name` ADD UNIQUE (

`column`

)

3.添加INDEX(普通索引)

mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

4.添加FULLTEXT(全文索引)

mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)

5.添加多列索引

mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

1、 大数据量的表,比如大于2GB。一方面2GB文件对于32位os是一个上限,另外备份时间长。

2、 包括历史数据的表,比如最新的数据放入到最新的分区中。典型的例子:历史表,只有当前月份的数据可以被修改,而其他月份只能read-only

ORACLE只支持以下分区:tables, indexes on tables, materialized views, and indexes on materialized views

分区对SQL和DML是透明的(应用程序不必知道已经作了分区),但是DDL可以对不同的分区进行管理。

不同的分区之间必须有相同的逻辑属性,比如共同的表名,列名,数据类型,约束

但是可以有不同的物理属性,比如pctfree, pctused, and tablespaces.

分区独立性:即使某些分区不可用,其他分区仍然可用。

最多可以分成64000个分区,但是具有LONG or LONG RAW列的表不可以,但是有CLOB or BLOB列的表可以。

可以不用to_date函数,比如:

alter session set nls_date_format='mm/dd/yyyy'

CREATE TABLE sales_range

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

sales_date DATE)

PARTITION BY RANGE(sales_date)

(

PARTITION sales_jan2000 VALUES LESS THAN('02/01/2000'),

PARTITION sales_feb2000 VALUES LESS THAN('03/01/2000'),

PARTITION sales_mar2000 VALUES LESS THAN('04/01/2000'),

PARTITION sales_apr2000 VALUES LESS THAN('05/01/2000')

)

Partition Key:最多16个columns,可以是nullable的

非分区的表可以有分区或者非分区的索引

分区表可以有分区或者非分区的索引

参考资料:http://blog.chinaunix.net/uid-42518-id-2404793.html


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11821417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存