一个创建无分区索引的例子:
1. CREATE INDEX
2. "LDY"."INDEX_TEST"
3. ON "LDY"."EMP"
4. ("DEPARTMENT_ID")
5. TABLESPACE "INDX"
6. PCTFREE 20
7. INITRANS 4
8. MAXTRANS 10
9. STORAGE
10. ( INITIAL 10K NEXT 10K
11. MINEXTENTS 1 MAXEXTENTS 100
12. PCTINCREASE 0
13. FREELISTS 2 FREELIST GROUPS 3
14. BUFFER_POOL RECYCLE)
15. PARALLEL ( DEGREE 2)
16. NOLOGGING
17. COMPRESS
18. REVERSE
解释:
1. 创建一个索引,UNIQUE表示是唯一索引,它要求索引中的数值是唯一的,BITMAP表示是位图索引。不加上这两个参数所创建的索引是默认的B*树索引。
2. 创建的索引属于的SCHEMA和索引的名称。
3. ON之后表示该索引创建在哪个SCHEMA的哪个表上。也可以指定是哪个簇,ON之后要加上CLUSTER,然后跟上SCHEMA和簇名。
4. 索引所创建在的表上的列名。如果是组合索引,可以有多个列,在括号中用逗号隔开,最多可以有32列合并在一个索引中。
5. 创建索引使用的表空间,也就是该索引所在的表空间。
6. PCTFREE表示在已存在的行中指出一个块需要保留多少空间用来更新。当一个块所使用的空间达到或超过PCTFREE值,则从空闲表中删除该块并不再使用这个块(默认值为10)。
7. INITRANS定义在每个数据块中分配的并发事务项的初始数目。其最大值取决于块大小。如果有大量的并发操作,则可以改变这个值,而数据库也可以按照需要动态地添加事务项(默认值为2)。
8. MAXTRANS指出允许更新给定数据块的并发事务的最大数目(默认值基于块大小的变量)。
9. STORAGE子句为索引确定实际物理存储特性。
10. INITIAL索引的第一个扩展区的大小。NEXT索引的下一个扩展区的大小。
11. MINEXTENTS应该分配给索引的扩展区的最小数目。MAXEXTENTS应该分配给索引的扩展区的最大数目。
12. PCTINCREASE在每个扩展区操作后,NEXT参数应该增加的百分比。
13. FREELISTS定义分配给索引的空闲表的数目。FREELIST GROUPS定义分配给索引的空闲表组的数目。
备注:从9i开始使用了自动段管理,FREELISTS和FREELIST GROUPS参数的指定都被忽略。
14. BUFFER_POOL定义在Oracle数据库中分配给对象的缓冲池(保留缓冲池KEEP,再循环缓冲池RECYCLE或者默认的缓冲池DEFAULT)。
15. PARALLEL表示配置表的并行化,没有加次项则不并行。括号内的DEGREE表示并行值,也可以用默认DEFAULT。
16. NOLOGGING表示无时间记录,不生成重做日志,更新较快,但不可恢复。LOGGING生成重做日志,更新较慢,但可恢复。一般情况下,不加此项。
17. COMPRESS表示对索引进行键压缩,数据库消除了重复出现的键列值。不能压缩仅含有一列的位图索引、分区唯一性索引或者唯一性索引。
18. REVERSE表示是反向键索引,允许创建以颠倒字节顺序存储的索引。也可以指定NOSORT表示未排序索引。不加以上两个就是按默认的,排序的索引。