012.Oracle-索引

2024-09-07 10:36
文章标签 oracle 索引 012

本文主要是介绍012.Oracle-索引,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

分隔线
在这里插入图片描述

索引

        • 索引
        • 管理索引
          • 创建索引

索引
  • 索引是用于加速数据存储的数据对象。
  • 合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。
  • 索引由很多种:
    1. 单列索引
    2. 符合索引
  • 为什么添加索引后,会加快查询速度呢?
    • 索引类似目录、图书馆的卡片

管理索引
创建索引
  • 单列索引
    • 单列索引是基于单个列所建立的索引
    • create index 索引名 on 表名(列名)
      create index emp_idxl on emp(ename);
      
  • 复核索引
    • 复合索引是基于两列或是多列的索引。在同一张表上可以有多个索引,但是要求列的组合必须不同
    • create index 索引名 on 表名(列名1,列名2)
      create index emp_idxl on emp(ename,job);create index emp_idxl on emp(job,ename);
      
    • 尽量把能筛选出更多内容的条件放在后面,因为oracle筛选是从后往前
  • 建索引原则
    1. 在大表上建立索引才有意义
    2. 在where子句或是链接条件上经常引用的列上建索引
    3. 索引的层次不要超过4层(多级索引)
  • 索引的缺点
    1. 建立索引,系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引
    2. 更新数据的时候,系统必须要有额外的时间来同时对索引进行更新,以维持数据和索引的一致性
    • 实践表明:不恰当的索引不但于事无补,反而会降低系统性能。因为大量的索引在进行插入、修改和删除操作时,比没有索引花费更多的系统时间
  • 比如在如下字段建立索引应该是不恰当的:
    1. 很少或从不引用的字段
    2. 逻辑性的字段(如:男或女、是或否等)
    3. 综上所述,提高查询效率是以消耗一定的系统资源为代价的,所以索引不能盲目的建立。这是考研一个dba是否优秀的重要指标
  • 其他索引
    • 按照数据存储方式:B*树索引、反向索引、位图索引
    • 按照索引列的个数:单列索引、复合索引
    • 按照索引列值的唯一性:唯一索引、非唯一索引
    • 还有:函数索引、全局索引、分区索引…
  • 在不同的情况,我们会在不同的列上建立索引。甚至建立不同种类的索引
  • 如:B*树索引建立在重复值很少的列上,位图索引建立在重复值很多、不同值相对固定的列上
  • 显示索引信息
  • 显示表的所有索引
    • 在同一张表上可以有多个索引,通过查询数据字典视图dba_indexs和user_indexs可以显示索引信息。
      • dba_indexs用于显示数据库所有的索引信息
      • user_indexs用于显示当前用户的索引信息
        select index_name,index_type from user_indexs where table_name='表名'
        
  • 显示索引列
    • 通过查询数据字段视图user_ind_columns可以显示索引对应的列的信息
      select table_name,column_name from user_ind_columns where index_name='索引名'
      
  • 通过pl/sql developer工具查看索引信息
    • 在这里插入图片描述

这篇关于012.Oracle-索引的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144818

相关文章

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决