您的位置:首页 > 数据库 > Oracle

oracle索引建立

2015-06-04 13:20 483 查看
1、明确地创建索引create index index_name on table_name(field_name)tablespace tablespace_namepctfree 5initrans 2maxtrans 255storage(minextents 1maxextents 16382pctincrease 0); 2、创建基于函数的索引常用与UPPER、LOWER、TO_CHAR(date)等函数分类上,例:create index idx_func on emp(UPPER(ename)) tablespace tablespace_name; 3、创建位图索引对基数较小,且基数相对稳定的列建立索引时,首先应该考虑位图索引,例:create bitmap index idx_bitm on class (classno) tablespace tablespace_name; 4、明确地创建唯一索引可以用create unique index语句来创建唯一索引,例:create unique index dept_unique_idx on dept(dept_no) tablespace idx_1; 5、创建与约束相关的索引可以用using index字句,为与unique和primary key约束相关的索引,例:alter table table_nameadd constraint PK_primary_keyname primary key(field_name)using index tablespace tablespace_name; 如何创建局部区索引?1)基础表必须是分区表2)分区数量与基础表相同3)每个索引分区的子分区数量与相应的基础表分区相同4)基础表的自分区中的行的索引项,被存储在该索引的相应的自分区中,例如create index TG_CDR04_SERV_ID_IDX on TG_CDR04(SERV_ID)Pctfree 5Tablespace TBS_AK01_IDXStorage(MaxExtents 32768PctIncrease 0FreeLists 1FreeList Groups 1)local/ 如何创建范围分区的全局索引?基础表可以是全局表和分区表create index idx_start_date on tg_cdr01(start_date)global partition by range(start_date)(partition p01_idx vlaues less than ('0106')partition p01_idx vlaues less than ('0111')...partition p01_idx vlaues less than ('0401'))/ 如何重建现存的索引?重建现存的索引的当前时刻不会影响查询重建索引可以删除额外的数据块提高索引查询效率alter index idx_name rebuild nologging;对于分区索引alter index idx_name rebuild partition partition_name nologging; 删除索引的原因?1)不再需要的索引2)索引没有针对其相关的表所发布的查询提供所期望的性能改善3)应用没有用该索引来查询数据4)该索引无效,必须在重建之前删除该索引5)该索引已经变的太碎了,必须在重建之前删除该索引语句:drop index idx_name;drop index idx_name partition partition_name; 建立索引的代价?基础表维护时,系统要同时维护索引,不合理的索引将严重影响系统资源,主要表现在CPU和I/O上。插入、更新、删除数据产生大量db file sequential read锁等待。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: