• Oracle-索引


    🍓索引

    索引:相当于一本书的目录,能够提高我们的查询效率
    创建索引的情况:

    1. 数据量非常大
    2. 该列经常会被作为查询条件
    	--格式:
    	--默认oracle建立的正序索引
    	create index 索引名称 on 表名(1,列2,列3...)
    	--oracle倒序索引
    	create index 索引名称 on 表名(1,列2,列3... desc)
    	
    	--demo
    	create index ss on T_TRUE_TJRESULT(day);
    
    	--重构索引(注意:在并发情况下重建索引可能会导致锁表)
    	alter index 索引名称 rebuild;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意: 主键约束自带主键索引,唯一约束自带唯一索引
    索引的原理:平衡二叉树,如果某列作为查询条件时,可以提高查询效率,但是修改的时候会变慢,因为插入的时候需要去修改树的结构,同时索引创建好后,过了一段时间,数据库的插入删除次数增多,会改变树的结构,所以每隔一段时间DBA数据库管理员会去重构索引。
    如下图平衡二叉树所示:以D为树根,比D大的查上面,比D小的查下面

    D
    E
    F
    G
    C
    B
    A

    🍓索引表ALL_INDEXES

    select OWNER, INDEX_NAME, INDEX_TYPE, TABLE_OWNER, TABLE_NAME, UNIQUENESS, TABLESPACE_NAME, STATUS, PARTITIONED from all_indexes
    
    • 1
    • OWNER :所有者用户名
    • INDEX_NAME:索引名
    • INDEX_TYPE :索引类型
    • TABLE_OWNER:索引对应的表的所有者用户名
    • TABLE_NAME:索引对应的表名
    • UNIQUENESS:索引的唯一性状态: UNIQUE:唯一, NONUNIQUE:不唯一, BITMAP
    • TABLESPACE_NAME:索引所在的表空间名称
    • STATUS:索引状态(VALID:有效索引,N/A:有效分区索引,UNUSABLE:无效索引)
    • PARTITIONED:是否分区索引

    作用:可以使用此表查询目标表有哪些索引,索引信息,索引是否失效,是否需要重构索引。

    🍓SQL的执行计划

    在这里插入图片描述
    查看方法:

    1. 从左往右看,缩进最多的最先执行
    2. 缩进相同的按照从上往下顺序执行
    3. Cost字段表示SQL每一步的执行成本,可以根据它来看最耗时的步骤进行优化。
    4. Description里面出现
      TABLE ACCESS FULL表示进行了全表扫描
      出现 TABLE ACCESS BY INDEX ROWID 表示走了索引,走哪个索引一般索引名称出现在Object name

    🍓强制走索引

    select /*+index(表名,索引名称)*/ * from 表名 where name = '张三' order by rksj asc
    
    • 1

    如果强制走索引也不成功

  • 相关阅读:
    Windows环境下Hadoop的安装和配置
    人工智能 多元线性回归(一)
    【Python绘画】画笑脸简笔画
    Failed to restart **: Unit **.service not found错误,
    Java集合框架
    git push 使用 --mirror 参数复制仓库
    C语言源代码系列-管理系统之实验设备管理系统
    Spring framework day 01:spring 整合数据源(连接池)
    idea(2021版本)Springboot项目热部署
    Go内存逃逸分析
  • 原文地址:https://blog.csdn.net/qq_34191426/article/details/126543401