• oracle 索引


    索引是一种与表相关的、可选的结构,用于加速对表的访问。当用户访问表中的数据时,oracle从索引中找到数据的指针,然后根据指针指向的位置从表中直接取得数据,索引可以减少磁盘I/O,加速数据访问速度。索引由oracle自动维护,无需用户的干预。
    唯一性索引(Unique Indexes)和非唯一性索引(Nonunique Indexes),唯一性索引能确保索引列不会出现重复值。
    通常索引都是由一列组成,而复合索引由多个索引列组成。
    索引的分类
    1,二叉树索引(B树索引),是使用最多的一种索引,在默认情况下,我们创建的索引都是B树索引,基于二叉树原理。
    2.二叉树聚簇索引(B-tree Cluster Indexes),主要用于聚簇。
    聚簇:如果一组表有一些共同的列,则将这样一组表存储在相同的数据库块中;聚簇还表示把相关的数据存储在同一个块上。利用聚簇,一个块可能包含多个表的数据。概念上就是如果两个或多个表经常做链接操作,那么可以把需要的数据预先存储在一起。聚簇还可以用于单个表,可以按某个列将数据分组存储。
    3. 哈希聚簇索引(Hash Cluster Indexes) 主要用于哈希聚簇
    4.反向索引(Reverse Key Indexes)反向索引页属于B树索引,它把索引值按字节反转过来。
    5. 位图索引(Bitmap Indexes)指通过位图对索引进行管理,位图索引适合唯一值很少的列,也就是重复值很多的列。
    6.基于函数的索引(Function-Based Indexes) 如果在SQL语句的where子句中经常用到函数或者表达式,则可以创建基于函数的索引。
    创建索引
    create index index_name on ct(name);--在表ct的列name上创建索引ind_name4
    create UNIQUE INDEX ind_name on ct(name) tablespace userdb;
    create BITMAP INDEX ind_id on ct(id);
    create INDEX ind_name3 on ct(name) REVERSE;
    create INDEX ind_name2 on ct(UPPER(name));
    select owner,index_name from dba_indexes;--查询数据库中有哪些索引(sys用户)
    SQL> select owner,index_name from dba_indexes where owner='ITEM';

    OWNER INDEX_NAME
    ------------------------------ ------------------------------
    ITEM IND_NAME
    ITEM IND_ID

    alter INDEX INDEX_ID REBUILD tablespace mytablespce;--把索引移动到另一个表空间
    select index_name,tablespace_name from dba_indexes where index_name ='index_id';---查看索引所在的表空间。
    如果索引因为某些原因无效或者因为很长时间没有维护而产生过多的索引碎片(index fragement)需通过重建索引来消除索引碎片,
    analyze index INDEX_NAME validate structure;---对索引进行分析
    select height,(DEL_LF_ROWS_LEN/LF_ROWS_LEN)*100 from INDEX_STATS WHERE NAME='INDEX_NAME';--从视图 index_stats中获得索引的统计信息
    DEL_LF_ROWS表示索引删除行数,LF_ROWS表示索引总行数, height表示二叉树的深度。
    若满足下列的其中一个,则要考虑重建索引:
    1,(DEL_LF_ROWS_LEN/LF_ROWS_LEN)*100 大于20,;
    2,height的值大于4。
    使用alter index index_id rebuild;命令重建索引index_id。

    删除索引

    drop index ind_name;

  • 相关阅读:
    Error creating bean with name 'configurationPropertiesBeans'异常
    bootstrap.yml没有小绿叶,添加配置无提示,配置无法加载
    Hello from Docker
    windows jdk8 nacos-server-1.4.0本地搭建启动
    Myeclipse导入的maven项目相关依赖包无法下载
    Idea的Terminal窗口找不见
    Win10系统Win键无法使用
    git拉代码报"error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054"
    团队作业6:复审与事后分析
    团队作业4:项目冲刺
  • 原文地址:https://www.cnblogs.com/happinessqi/p/3349992.html
Copyright © 2020-2023  润新知