索引和约束

索引优点
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值