首页 > 其他分享 >索引

索引

时间:2023-07-13 09:45:04浏览次数:20  
标签:sal 创建 索引 job emp where

索引

索引(index) 是为了加快数据的查找而创建的数据库对象,特别是大表,索引可有效的提过查找速度,也可以保证数据的唯一性,索引是由Oracle自动使用和维护的,一旦创建成功,用户不必对索引进行直接的操作。索引是独立于表的数据库结构,即表和索引是分开存放,当删除索引时,对拥有索引的表的数据没影响。

索引对象作用:优点,加快查询速度;缺点,在对数据进行更新增删改时索引也会跟着更新。

在创建PRIMARY key和unique约束条件时,系统将自动为相应的列创建唯一(unique)索引。索引的名字同约束的名字一致。

索引有两种:B*树索引和位图(bitmap)索引

  • B*树索引是通常使用的索引,也是默认是索引类型。B树是一种平衡2叉树,左右的查找路径一样。这种方法保证了对表的任何值的查证时间都相同。

    B树索引可分为:唯一索引,非唯一索引,一列简单索引和多列复合索引

创建索引

创建索引一般掌握以下原则:只有较大的表才有必要建立索引,表的记录应该大于50条,查询数据小于总行数的2%~4%,虽然可以为表创建多个索引,但是无助于查询的索引不但不会提高效率,还会增加系统开销。因为执行DML操作时,索引也要跟着更新,这时索引会降低系统的性能。一般在主键列或经常出现where子句或连接条件中的列建立索引,该列称为索引关键字。

创建索引不需要特定的系统权限。建立索引的语法如下:

create [{UNIQUE|BITMAP}] INDEX 索引名 on 表名(列名1[列2,....]);

其中:UNIQUE代表创建唯一索引,不指明为创建非唯一索引。

BITMAP 代表创建位图索引,如果不指明该参数,则创建B*树索引。

列名是创建索引的关键字列,可以是一列或多列。

创建复合索引

create inde emp_jobsal on emp(job,sal);
--调用索引
select enam,job,sal from emp where job='manager' and sal>2500;

说明:本列创建的两列复合索引,job是主键,sal是次健。where条件中引用了job和sal,而且按照索引关键字出现的顺序引用,所以查询中,索引被引用。

以下查询可能会

select enam,job,sal from emp where job='cleark'   --会引用该复核索引
select enam ,job,sal from emp where sal>2500;--不会引用该查询。因为没有引用索引关键字的主键:

 

删除索引

删除索引的人应该是索引的创建者或拥有drop any index系统权限用户。索引的删除对表没影响。

~~~sql

drop index 索引名 ~~~

查看索引

通过数据字典USER_index可以检查创建的索引。

通过查询数据字典USER_IND_COLUMNS可以检查索引的列。

标签:sal,创建,索引,job,emp,where
From: https://www.cnblogs.com/xjianbing/p/17549534.html

相关文章

  • 索引
    1.索引设计原则对查询频次较高,且数据量比较大的表建立索引。索引字段的选择,最佳候选列应当从where子句的条件中提取,如果where子句中的组合比较多,那么应当挑选最常用、过滤效果最好的列的组合。使用唯一索引,区分度越高,使用索引的效率越高。2.explain分析执行计划 id......
  • 一个突破搜索引擎的信息茧房方法
    搜索引擎为我们提供了一个广阔的知识世界,通过基于关键词的搜索算法,帮助我们快速、准确地找到所需的信息,包括文章、新闻、图片、视频等各种类型的内容。所以我们要善于使用搜索引擎,帮助我们探索知识、寻找答案和解决问题,扩展自己的知识储备和理解世界。突破搜索引擎的信息茧房在......
  • logstash+Elasticseach单节点 让logstash生成单副本索引
    要让Logstash和Elasticsearch生成单副本索引,请按照以下步骤更改Logstash的输出配置文件:打开Logstash配置文件,该文件默认位于 logstash/config 目录下。找到输出部分配置,并添加以下行:output{elasticsearch{hosts=>["localhost"]index=>"your......
  • mysql中innodb的索引结构以及使用B+树实现索引的原因?
    在MySQL中,InnoDB引擎使用B+树数据结构来实现索引。B+树是一种平衡的多叉树,它具有以下优点:有序性:B+树的叶子节点是按照键值大小顺序存储的,这样可以方便地进行范围查询操作,提高查询效率。平衡性:B+树通过自动调整节点的分裂和合并来保持树的平衡,使得所有叶子节点到根节点的路径长度相......
  • 2.mysql的索引
    一、索引概述索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。索引是帮助MySQL高效获取数据的排好序的数据结构。平时代码中为了方便查询,我们使用的哈希表、链表、二叉树等数据结构存储相关数据,使用二分、二叉搜......
  • MySQL---索引优化与查询优化
     索引失效案例全值匹配我最爱当where条件的所有字段都有索引完全匹配时,效率最高最左前缀规则(联合索引)联合索引,在检索数据时从联合索引的最左侧开始匹配主键插入顺序计算/函数/类型转换(自动或手动)导致索引失效......
  • 程序员必备:使用AI工具通义千问,没有广告没有假链接,比搜索引擎要便捷多了,回答还算满意
    我提的问题是:使用Python连接Oracle,cx_Oracle和oracledb那个效率更高,功能更全,请列出他们的区别和实例代码回复是:以下是使用Python连接Oracle时,cx_Oracle和oracledb的效率和功能比较及实例代码:效率比较:cx_Oracle是一个Python官方标准库,使用了JIT编译技术,可以提高查询性能。ora......
  • 索引
    字符串数据结构图论最短路动态规划数学计算几何思想与技巧......
  • mysql索引优化(一)
    (1)数据准备建表插入部分数据CREATETABLE`employees`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(24)NOTNULLDEFAULT''COMMENT'姓名',`age`int(11)NOTNULLDEFAULT'0'COMMENT'年龄',`position`varchar(......
  • 二分法查找目标元素在数组中的索引
    /***给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,*如果目标值存在返回下标,否则返回-1。*输入:nums=[-1,0,3,5,9,12],target=9*输出:4*解释:9出现在nums中并且下标为4......