索引和约束

索引优点
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; --所有主键类



 






 
原文地址:https://www.cnblogs.com/Remedy/p/8652163.html