度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1949|回复: 4
打印 上一主题 下一主题

[分享] oracle索引技术基本用法总结

[复制链接]

348

主题

3572

帖子

9375

积分

论坛元老

Rank: 8Rank: 8

积分
9375
跳转到指定楼层
楼主
发表于 2020-7-23 17:35:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1、oracle索引介绍

索引是一种与表有关的数据库对象,主要作用是加快数据的读取速度和完整性检查,一般在做应用开发的时候不会胡乱的增加或删除索引,因为索引的增减确实是个技术活,而且维护索引也是需要很大的代价,所以,索引一般都是在做数据库设计的时候一并设计好建立。通俗的说,索引可以看作是一本书的目录,当我想找书中的某一个内容是,首先进入目录,找到相应的子目录或者栏目,然后根据栏目页后面的页码找到对应的内容页,而索引也是如此,如果我想找某张表中的某一条记录,首先,进入索引,再进入索引的分支,然后进入分支下的叶子节点,根据叶子节点中的rowid找到相应的记录,因为每一条记录都有一个唯一的rowid。

下面有一个关于索引的例子,摘自虫师的博客:


对于上面这张图,根结点记录0到50条数据的位置,分支结点进行拆分记录0到10……42到50,叶子结点记录每条数据的长度和值,并由指针指向具体的数据。最后一层的叶子结点是双向链接,它们是被有序的链接起来,这样才能快速的锁定一个数据范围。

2、oracle索引的分类

(1)按逻辑分类

single column or concatenated:对一列或多列建索引。

unique or nonunique:唯一的和非唯一的索引,也就是对某一列或几列的键值是否是唯一的。

function-based:基于某些函数索引,当执行某些函数时需要对其进行计算,可以将某些函数的计算结果事先保存并加以索引,提高效率。

doman:索引数据库以外的数据,使用相对较少。

(2)按物理分类

B-Tree:B-Tree索引就是传统上常见的所理解的索引,它也可以分为正常索引和倒序索引。

Bitmap:位图索引。

3、oracle索引的创建

上图2是索引创建的一个规范,不过我一般写的简单,就直接类似:

-- 基于一个列CREATE INDEX emp_last_name_idxON employees(last_name);-- 基于多个列CREATE INDEX emp_last_name_age_idxON employees(last_name, age);

上面列出的是一种简单索引,还有一类常用的索引叫做函数索引,比如:

CREATE INDEX emp_upper_last_name_idxON employees(UPPER(last_name));

如果employees表中存储的last_name英文大小不一,那么当我进行如下查询的时候,如果直接对last_name建立索引就无法调用到索引,所以为了满足下面的查询,我们建立上面的函数索引,查询语句如下:

SELECT * FROM employees e WHERE UPPER(e.last_name) = 'YEDWARD';

4、删除索引

删除索引的语句:

DROP INDEX emp_upper_last_name_idx;

对索引的操作,还应该包括修改索引的一些操作,比如重建索引,改变索引空间大小等等,不过这些操作,跟开发人员关系应该也不大,让DBA烦去吧,所以不总结在这里,了解一下索引的简单用法就OK了。

索引虽然很有用,但是并不是任何时候都适合建立索引,在什么情况下不适合建立索引呢,我看到过这样的一种说法,说下面的情况都不宜建立索引:

(1)被查询的表本身就很小,即使是全表扫描也很快。

(2)基于这张表的查询,大多数情况下需要获取的数据量都超过了总量的4%。

(3)这张表需要进行频繁的更新操作,如果建立了索引,则该索引也会频繁的随之更新,从而会降低数据库整体效率。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
发表于 2020-7-24 13:00:04 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
板凳
发表于 2020-7-24 13:00:21 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
发表于 2020-7-24 13:00:45 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
5#
发表于 2020-2-2 17:37:45 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-12-22 00:58 , Processed in 0.155733 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表