索引优点 1.索引使得检索的数据的速度大大加快 2.创建索引时自动添加了唯一性约束,确保每一条数据的唯一性 3.可以加快表与表之间的链接,提高多表查询的速度 4.在分组和排序子句进行数据汇总的时候,显著减少查询中分组和排序的时间。 每张表都会有一个ROWID物理地址列,用来唯一标志一条记录所在物理 位置一个ID号 B树索引 位图索引 重复值较高的字段称为具有较低的基数,重复值较高的字段则基数较低, 值的可能性列数占行数 1-3% 在B树索引中,一个索引键指向一行,通过ROWID进行定位 在位图索引中,为独立列值创建一个索引键,一个索引键对应多个行 --创建B树索引 create index idx_emp on emp(ename); --创建位图索引 create bitmap index bit_emp on emp(mgr); --创建函数索引 create index idx_emp_total_sal on emp(sal*comm+sal); select ename,empno from emp where sal*comm+sal>5000; --重命名索引 alter index index_name rename to new_name; --对索引进行分析 ANALYZE index IDX_EMP validate structure; --查询索引的高度和索引删除标志的比率,如果索引高度大于3或索引删除标记多,需要重建索引 select height,del_lf_rows/lf_rows from index_stats; --查看索引叶块的使用率,如果过低则需要合并索引 select pct_used from index_stats; --重要的数据库表应该定期重建或合并索引,以便使索引发挥最大的效能 --合并索引 alter index idx_emp coalesce; --重新建立索引,更改索引所在的表空间 --重建过程中,会对基表添加共享锁,无法进行插入,修改和删除,时间长影响用户的使用 --采用REBULID ONLINE子句 alter index idx_emp rebuild online tablespace users; --监控索引是否得到了使用 --开启监控 alter index idx_emp monitoring usage; --终止监控 alter index idx_emp nomonitoring usage; --查询索引是否被正常使用 select index_name,used,start_monitoring,end_monitoring from v$object_usage where index_name='IDX_EMP'; --monitoring usage需要占用一定的监视资源,避免繁忙时期监控, --会导致性能下降,应该选择一个合理的空闲时间进行监控 --删除索引 ,注意约束 drop index idx_emp 索引创建的策略 1.在创建主键时,会自动创建唯一性约束,B树 2.对相对于数据较小的表避免使用索引,使用全表扫描更合适 3.如果需要访问的数据不超过表中总数量的4%-5%,则需要建立索引 4.在创建多表连接查询时,对连接的列建立索引 5.对在where子句频繁使用的列建立索引 6.对order by 和group by操作中的列建立索引或涉及排序和union和distinct 7.通常不要在由长字段串组成的列上创建索引 8.不要需要频繁动态更改列上建立索引 9. 对具有高选择性的表创建索引,选择几乎没有相同值的表建立索引 10.不要在一个表中创建大量的索引 11.当唯一等值可能不唯一时需要创建复合索引,索引的顺序,使选择性最高的列作为索引的第1列 http://blog.csdn.net/fengshuiyue/article/details/13172129 约束 --禁用约束 alter table emp disable constraint SYS_C0011558; --(enable) 1 主键 primary key 2 外键 foreign 引用键referenced key 3 检查约束 check(hiredate >to_date('2010-10-10')) 4 唯一性约束 unique 非空约束 not null 5 修改约束 alter table emp add constraint pk_books primary key(book_id); 6 重命名约束 alter table emp rename constraint pk_books to pk_newbooks 7删除约束 alter table books_alt drop primary key; 8 禁用约束 alter table emp disable constraint SYS_C0011558; alter table emp enable constraint SYS_C0011558; 9删除约束 alter table score drop constraint FK_SNO; alter table score drop primary key; --所有主键类