问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据库索引有哪几种?怎样建立索引?

发布网友 发布时间:2022-03-22 16:03

我来回答

2个回答

热心网友 时间:2022-03-22 17:32

1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引;

create index 索引名 on 表名(列名) tablespace 表空间名;

建立主键或者唯一约束时会自动在对应的列上建立唯一索引;

2、索引列的个数:单列索引和复合索引;

3、按照索引列的物理组织方式。

CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>     ON <schema>.<table_name>     (<column_name> | <expression> ASC | DESC,      <column_name> | <expression> ASC | DESC,...)     TABLESPACE <tablespace_name>     STORAGE <storage_settings>     LOGGING | NOLOGGING     COMPUTE STATISTICS     NOCOMPRESS | COMPRESS<nn>     NOSORT | REVERSE     PARTITION | GLOBAL PARTITION<partition_setting>

使用USER_IND_COLUMNS查询某个TABLE中的相应字段索引建立情况

使用DBA_INDEXES/USER_INDEXES查询所有索引的具体设置情况。

在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:

一、B树索引:

最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是通过在索引中保存排过续的索引列值与相对应记录的ROWID来实现快速查询的目的。其逻辑结构如图:

可以保证无论用户要搜索哪个分支的叶子结点,都需要经过相同的索引层次,即都需要相同的I/O次数。

B树索引的创建示例:

create index ind_t on t1(id) ;

注1:索引的针对字段创建的,相同字段不能创建一个以上的索引;

注2:默认的索引是不唯一的,但是也可以加上unique,表示该索引的字段上没有重复值(定义unique约束时会自动创建);

注3:创建主键时,默认在主键上创建了B树索引,因此不能再在主键上创建索引。

二、位图索引:

有些字段中使用B树索引的效率仍然不高,例如性别的字段中,只有“男、女”两个值,则即便使用了B树索引,在进行检索时也将返回接近一半的记录。

所以当字段的基数很低时,需要使用位图索引。(“低”的标准是取值数量 < 行数*1%)

位图索引的逻辑结构如上图所示:索引中不再记录rowid和键值,而是将每个值作为一列,用0和1表示该行是否等于该键值(0表示否;1表示是)。其中位图索引的行顺序与原表的行顺序一致,可以在查询数据的过程中对应计算出行的原始物理位置。

位图索引的创建示例:

create bitmap index ind_t on t1(type);

注:位图索引不可能是唯一索引,也不能进行键值压缩。

三、反向键索引:

考虑这个情况:某一字段的值是1-1000顺序排列,建立B树索引后依旧递增,到后来该B数索引不断在后面增加分支,会形成如下如的不对称树:

反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。

反向键索引的创建示例:

create index ind_t on t1(id) reverse;

注:键的反转由系统自行完成。对于用户是透明的。

四、基于函数的索引:

有的时候,需要进行如下查询:select * from t1 where to_char(date,'yyyy')>'2007';

但是即便在date字段上建立了索引,还是不得不进行全表扫描。在这种情况下,可以使用基于函数的索引。其创建语法如下:

create index ind_t on t1(to_char(date,'yyyy'));

注:简单来说,基于函数的索引,就是将查询要用到的表达式作为索引项。

五、全局索引和局部索引:

这个索引貌似很复杂,其实很简单。总得来说一句话,就是无论怎么分区,都是为了方便管理。

具体索引和表的关系有三种:

1、局部分区索引:分区索引和分区表1对1

2、全局分区索引:分区索引和分区表N对N

3、全局非分区索引:非分区索引和分区表1对N

创建示例:

首先创建一个分区表

create table student

(

stuno number(5),

sname vrvhar2(10),

deptno number(5)

)

partition by hash (deptno)

(

partition part_01 tablespace A1,

partition part_02 tablespace A2

);

创建局部分区索引(1v1):

create index ind_t on student(stuno)

local(

partition part_01 tablespace A2,

partition part_02 tablespace A1

); --local后面可以不加

创建全局分区索引(NvN):

create index ind_t on student(stuno)

global partition by range(stuno)

(

partition p1 values less than(1000) tablespace A1,

partition p2 values less than(maxvalue) tablespace A2

); --只可以进行range分区

创建全局非分区索引(1vN)

create index ind_t on student(stuno) GLOBAL;

根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……

热心网友 时间:2022-03-22 18:50

数据库索引分为以下6种:

1、B树索引

2、位图索引

3、反向键索引

4、函数索引

5、删除索引

6、重建索引

建立索引

IF NOT EXISTS (SELECT * FROM sysindexes WHERE id=OBJECT_ID('Sales.Orders') AND name='idx_nc_orderdate')

CREATE NONCLUSTERED INDEX idx_nc_orderdate ON Sales.Orders(orderdate);

GO

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有的时候脑海里有旋律。但是想不出来不知道是什么乐器演奏的。。只能... ...就听不准了 好像被和弦带偏了似的... 怎么办 钢琴 ...想用钢琴弹出来,但老是找不准音。这种情况怎么办呢,怎么练习,要是... DNF女枪炮师110级装备选择指南(全面解析女枪炮师110级装备搭配)_百度... 性生活出血要做什么检查 英国旅游签证办理需要哪些材料? 结婚证在女方户籍地办理有必要吗 结婚的时候在女方户口所在地领结婚证可以吗 结婚证可以在女方户口所在地领吗? 为什么有的微信号显示用户不存在了 数据库表如何建立索引? word中如何建立索引 在数据表中索引有什么用?怎么建立索引? 索引怎么建立使用 如何创建合适的索引 mysql怎么建立索引 在数据表中索引有什么用,怎么建立索引 如何建立索引? excel表格怎样建立索引 数据库索引怎么建立? 如何创建索引 如果我在外地办的手机卡没有注销会影响信誉度吗 电话卡不用了,不注销,有影响吗 手机卡不用了需要注销吗?不注销的话有什么后果? 电话卡不用了,但是没注销,会怎样? 手机卡如果不用了 不注销可以吗?会不会有影响? 联通卡欠费,不用了不注销会有影响吗? 手机卡不注销会影响征信吗 电信卡不用了不注销会有什么后果? 中国移动卡不用了不去注销会不会影响个人征信? 如何在文件夹中建立索引 sql怎么建立索引 在数据库写出建立索引的操作步骤? 数据库。写出建立索引的操作步骤? 相机用的是wifi内存卡,那么要如何把照片传送到手机里呢? 佳能5D3的相机,我装了带wifi的SD卡!请问怎么把照片传到手机里!谢谢 带wifi的sd卡怎么用 带wⅰfⅠ的sD照片怎么传到手机 单反wifi sd卡怎么用 我的是尼康D7000,我在网上买了Wi-Fi内存卡,怎么把照片传到手机 WIFI SD卡怎么用? 您好 请问相机里的Wi-Fi sd卡怎么和手机进行连接传照片 易享派wifi卡照片怎么传到笔记本电脑上 怎么把手机sd卡上的照片转到手机上面 数码相机照片如何导出到电脑里面 相机带wifi的cd卡怎样将照片导入手机 wifi卡怎么传照片 数码相机用的wifi-sd卡以直接传照片到有wifi功能的移动硬盘里吗? 怎样将相机里的有wif的内存卡中的照片传到手机里 佳能WiFi数码相机怎么传照片到电脑