• 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

    如果强制走索引也不成功

  • 相关阅读:
    ClickHouse 复制表引擎重复数据无法写入
    Java—类加载机制
    ES6中的set与map
    uni-app进阶使用(vuex、组件、api)
    SpringCloud中的分布式锁用法详解(Java+Redis SETNX命令)
    使用Obfuscar 混淆WPF(Net6)程序
    博客园商业化之路-开发任务众包平台:召集早期合作开发者
    [暑假]Vue框架里面 一些属性和配置项的作用
    三个经典示例解释什么是「零知识证明」
    vue实现【接口数据渲染随机显示】和【仅显示前五条数据】
  • 原文地址:https://blog.csdn.net/qq_34191426/article/details/126543401