我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle系列:(25)索引

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle系列:(25)索引



什么是索引【Index】

(1)是一种快速查询表中内容的机制,类似于新华字典的目录

(2)运用在表中某个/些字段上,但存储时,独立于表之外


为什么要用索引

(1)通过指针加速Oracle服务器的查询速度

(2)通过rowid快速定位数据的方法,减少磁盘I/O

     rowid是oracle中唯一确定每张表不同记录的唯一×××


rowid的特点

(1)位于每个表中,但表面上看不见,例如:desc emp是看不见的

(2)只有在select中,显式写出rowid,方可看见

(3)它与每个表绑定在一起,表亡,该表的rowid亡,二张表rownum可以相同,但rowid必须是唯一的

(4)rowid是18位大小写加数字混杂体,唯一表代该条记录在DBF文件中的位置

(5)rowid可以参与=/like比较时,用''单引号将rowid的值包起来,且区分大小写

(6)rowid是联系表与DBF文件的桥梁

Oracle系列:(25)索引


思考:rowid是联系表与DBF文件的桥梁,我不理解。




索引的特点

(1)索引一旦建立, Oracle管理系统会对其进行自动维护, 而且由Oracle管理系统决定何时使用索引

(2)用户不用在查询语句中指定使用哪个索引

(3)在定义primary key或unique约束后系统自动在相应的列上创建索引

(4)用户也能按自己的需求,对指定单个字段或多个字段,添加索引


什么时候【要】创建索引

(1)表经常进行 SELECT 操作

(2)表很大(记录超多),记录内容分布范围很广

(3)列名经常在 WHERE 子句或连接条件中出现

 注意:符合上述某一条要求,都可创建索引,创建索引是一个优化问题,同样也是一个策略问题

       

什么时候【不要】创建索引

(1)表经常进行 INSERT/UPDATE/DELETE 操作

(2)表很小(记录超少)

(3)列名不经常作为连接条件或出现在 WHERE 子句中

同上注意


为emp表的empno单个字段,创建索引emp_empno_idx,叫单列索引,create index 索引名 on 表名(字段,...)

create index emp_empno_idx
on emp(empno);

Oracle系列:(25)索引


为emp表的ename,job多个字段,创建索引emp_ename_job_idx,多列索引/联合索引

create index emp_ename_job_idx 
on emp(ename,job);

如果在where中只出现job不使用索引

如果在where中只出现ename使用索引

我们提倡同时出现ename和job


注意:索引创建后,只有查询表有关,和其它(insert/update/delete)无关,解决速度问题


删除emp_empno_idx和emp_ename_job_idx索引,drop index 索引名

drop index emp_empno_idx;
drop index emp_ename_job_idx;

Oracle系列:(25)索引







免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle系列:(25)索引

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL系列(七)索引和视图

(1)索引的创建于管理 ① 为student表的phone列上建立一个降序普通索引phone_idx,并输出student表中的记录,注意观察phone字段上的顺序; create index phone_idx on student(p
MySQL系列(七)索引和视图
2023-12-22

[Python列表]-索引

前言序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,
2023-01-31

oracle报无效的列索引怎么解决

如果你在使用Oracle数据库时遇到了"无效的列索引"错误,可能是由于以下几个原因导致的:列名错误:请确保你输入的列名是正确的,并且与数据库中的列名完全匹配,包括大小写。列顺序错误:如果你在查询中使用了列索引(如SELECT语句中的SELE
oracle报无效的列索引怎么解决
2024-04-09

Oracle函数使索引列失效怎么办

小编给大家分享一下Oracle函数使索引列失效怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、数据版本与原始语句及相关信息1.版本信息SQL> select * from v$version;
2023-06-22

编程热搜

目录