当前位置:首页 > 数据库 > oracle创建索引

oracle创建索引

2022年11月09日 10:19:13数据库6

数据库索引是为了提高查询速度的一种数据结构。

索引的创建语句

索引的创建语句非常简单。

CREATE INDEX 索引名 ON 表名(列名);

除了单列索引,还可以创建包含多个列的复合索引。

CREATE INDEX 索引名 ON 表名(列名1, 列名2, 列名3, ...);

删除索引也非常简单。

DROP INDEX 索引名;

查看某个表中的所有索引也同样简单。

SELECT * FROM ALL_INDEXES WHERE TABLE_NAME = '表名'

还可以查看某个表中建立了索引的所有列。

SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '表名'

索引的建立原则

1.索引应该建立在WHERE子句中经常使用的列上。如果某个大表经常使用某个字段进行查询,并且检索的啊行数小于总表行数的5%,则应该考虑在该列上建立索引。

2.对于两个表连接的字段,应该建立索引。

3.如果经常在某表的一个字段上进行Order By的话,则也应该在这个列上建立索引。

4.不应该在小表上建立索引。

索引的优缺点

索引主要是为了提高数据的查询速度,这就是索引的优点。但是当进行增删改的时候,会更新索引。因此索引越多,增删改的速度就会越慢,因为有一个维护索引的过程。创建索引之前需要权衡该字段是否经常发生增删改操作,否则可能会带来负优化的问题。

索引的优点

1.很大地提高了数据的检索速度。

2.创建唯一索引能保证数据库表中每一行数据的唯一性(唯一性约束)。

3.提高表与表之间的连接速度。

索引的缺点

1.索引需要占用物理空间。

2.当对表中的数据进行增加、删除和修改的时候,索引也要动态地进行维护,降低数据的维护速度。

关于查询优化器

当Oracle拿到SQL语句的时候,会使用查询优化器去分析该语句,并根据分析结果生成查询执行计划。也就是说,数据库是执行的查询计划,而不是SQL语句。

查询优化器有RBO(Rule-Based-Optimizer,基于规则的查询优化器)和CBO(Cost-Based-Optimizer,基于成本的查询优化器),其中基于规则的查询优化器在10g的版本中彻底消失了。原因是因为RBO最后的查询都是全表扫描,而CBO会根据统计信息选择最优的查询方案。

因此,CBO一旦发现有索引的存在,并且这个索引能帮助提高查询速度,就是使用通过索引进行查询的方法。

 

"你在经历着怎样的艰难坎坷。"

作者:yanggb
来源链接:https://www.cnblogs.com/yanggb/p/11221508.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/68658.html

标签: Oracle
分享给朋友:

“oracle创建索引” 的相关文章

数据库隔离级别深入理解(ORACLE)

     TRANSACTION_READ_UNCOMMITTED 1   这种隔离级别最低,脏读,不可重复读,幻读都会发生,我用的oracle,并没有支持这个级别,不作研究。   TRANSACTION_READ_COMMITTED  2&nbs...

Eclipse代替Oracle接管Java EE

Eclipse代替Oracle接管Java EE

Eclipse Foundation接替Oracle成为Java EE的新东家,Oracle不再管理Java EE。 作为采用的一部分,Java EE可能会更换新名称,Oracle建议在其建议中使用Java EE。 一个月前,Oracle表示将结束...

ORACLE数据库与Navicat安装 随手笔记

ORACLE数据库与Navicat安装 随手笔记

一、安装oracle数据库 1、下载安装包 oracle数据库下载地址: https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c...

Navicat for oracle 破解版

Navicat for oracle 破解版

1、下载解压,得到64位和32位的navicat for oracle 12中文原程序和注册机;2、以安装64位为例,双击文件“navicat120_ora_cs_x64.exe”开始安装,勾选同意软件协议;3、默认安装目录【C:\Program Files\PremiumSoft\N...

使用Navicat为Oracle导入函数后函数显示红叉

使用Navicat为Oracle导入函数后函数显示红叉

上图是plsql中的截图 有可能是Navicat没有缓存过程,刷新试一试,不行的话,对导入的函数进行重新编译即可。 还发现一个问题是,Navicat导出的脚本里面,函数部分竟然没有参数和返回值,让我很疑惑,最后是通过plsql导出的存储过程在N...

mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()

mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()

1.group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。比较抽象,难以理解。 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必...

MySQL和Oracle使用group by的区别

Oracle在使用group by时,查询字段必须是分组的依据或聚合函数。 MySQL没有此限制,会自动取第一行。 作者:思想永无止境 来源链接:https://blog.csdn.net/u012643122/articl...

在xshell连接oracle,客户端XShell+Xmanager配置oracle流程

客户端:XShell + Xmanager配置流程: 1.使用XShell建立连接时,设置连接属性,在 SSH --> tunneling 选项下勾选 Forward X11 connections to:勾选 Xmanager。 2.登陆...

Oracle第五课(学习笔记)

下午听得实在是腻味,眼皮打架阿。。。错过了点东西。也就是数据优化那段。以后自己给自己补上,幸好都是书上的东西。今天讲解了点MYSQL的内容。 连接查询 JUL12_CLASS     JUL12_STUDENT...

Oracle数据库基础select查询语句(续)

模糊查询       关键字:like   通配符:%:表示0到多个字符       _:表示单个字符       eg:查询员工名字第二个字符为L的员工信息。...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。