zoukankan      html  css  js  c++  java
  • 索引和约束

    索引优点
    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; --所有主键类
    
    
    
     
    
    
    
    
    
    
     
  • 相关阅读:
    .net证书Rsa加密
    $.ajax
    EF通用CRED
    JSON.pase()
    mysql 使用EF6.0CodeFirst
    jenkins 自动构建——shell脚本
    nginx配置示例
    easyui 随笔
    javascript 随笔
    asp.net mvc4 过滤器的简单应用:登录验证
  • 原文地址:https://www.cnblogs.com/Remedy/p/8652163.html
Copyright © 2011-2022 走看看