首页 > 编程知识 正文

oracle修改索引,oracle 建立索引

时间:2023-05-05 07:09:03 阅读:110651 作者:1554

甲骨文

创建和管理索引

1.

甲骨文

索引

甲骨文

数据库中有一个存储的所有行的数据

rowID

点击时光流逝

甲骨文

如果存储有大量数据,则大量的

rowID

想快速定位此时指定的东西

rowID

必须使用索引对象。

是啊

甲骨文

执行指定条件的查询时,通常会取出所有记录,将每个记录与查询条件进行比较,并返回满足条件的记录。 这样的操作不仅需要时间和资源。 如果有索引,则只要在索引内找到满足查询条件的索引字段的值,就保存在索引中

rowID

快速找到表中的相应记录。

用户可以根据情况创建多种类型的索引。 根据索引的保存方法将索引分为

B

树索引、位图索引、反向索引和基于函数的索引。 编制索引时,请注意以下事项:

LL

索引为

where

对于经常引用、排序和分组子句的列,如果选定的列不正确,则无法加快查询速度。

LL

限制索引的数量。 索引只会提高查询的速度,但会降低

DML

操作速度;

LL

指定索引块空间的使用参数。 在根据表创建索引时,请使用、

甲骨文

相应的表将添加到索引块中。 在向索引中添加数据时,

甲骨文

中选择所需的族

无PCT

参数在索引块中保留部分空间。 将来在表中显示大量的

插入

要进行操作,必须在索引时设置较大的

无PCT

LL

将表和索引放在同一个表空间中可以简化表空间的管理。 将表和索引放在不同的表空间中可以提高访问性能(请参阅)

甲骨文

能够并行读取不同硬盘的数据;

2.

编制索引

在创建索引时,

甲骨文

首先对要索引简历的字段进行排序,然后对排序后的字段的值和对应记录的

rowID

存储在索引段中。 查询时,根据索引查询指定条件

rowID

进一步根据

rowID

提取数据行。

1 )1) ) ) )。

B

树索引

B

对于树索引

甲骨文

最常见的索引类型(默认类型)是

B

树结构组织和存储索引数据。 默认情况下

B

树索引中的数据按照升序排序。

B

树索引由根块、分支块和叶块组成。

/哈哈

emp

表格

深tno

为列创建索引

索引

_

测试

创建

索引

索引

_

测试

开启

emp

深tno

无PCT

25

Tablespace

用户系统

在此,子句

无PCT

指定为将来

插入

操作中保留的可用空间,子句

tablespace

指定索引段所在的表空间

2 )位图索引

如果要编制索引的列中包含的值过少,则在为性别列编制索引时,只能使用“男”或“女”值

B

从树索引中检索到的值wwdws过多,索引失去了意义。 在这种情况下,必须使用位索引。

例如:

创建

bitmap

索引

索引

_

测试

开启

emp

莎拉

Tablespace

用户系统

注:初始化参数

创建

_

bitmap

_

area

_

大小

指定创建位图索引时要分配的位图区域的大小。 默认值为8

MB

中选择所需的族。 参数越大,创建位图索引的速度越快。 将参数语句更改为:

警报

系统

创建

_

bitmap

p>

_

area

_

size

=8388608

Scope

=

spfile

修改后需要重新启动数据库方可生效;

3) 反向键索引

在单调递增的列上使用

B

树索引时,若用户对表中数据做了删除操作,将导致对某一边的叶子节点的大量占用。

Oracle

提供另一种索引机制,及反向键索引,它可以将添加的数据随机分散到索引中。反向键索引是一种特殊的

B

树索引,在顺序递增数列上建立索引非常有用。反向键索引在原理和存储结构方面和

B

树索引类似。当用户插入记录时,将列值进行反向操作后进行索引,此时数据不在是递增的,所以新数据在值的范围上分布通常比原来的有序树更均匀。

例:

Create

index

index

_

test

On

emp

(

deptno

)

reverse

Tablespace

users

;

如果该列上已经建立了

B

树索引,那么可以将其修改为反向键索引:

Alter

index

index

_

test

Rebulid

reverse

;’

4) 基于函数的索引

用户在使用数据库时,最常遇到的问题是大小写字符敏感。例如在

emp

表中

Job

字段有

MANAGER

的记录,当用户使用小写搜索时则无法找到该记录,只能通过函数

upper

对应进行转换,在使用转换后的数据进行检查。但是这样查询是,即便

job

列有普通索引,

Oracle

也会执行全表搜索,并为遇到的各个行计算

upper

函数。这种情况可以使用建立基于函数的索引,通常只是常规

B

树索引,但是它存放的数据是由表中数据应用函数后得到的,而不是直接存放表中的数据本身。

如果习惯使用小写字符串,可以创建如下索引:

Create

index

index

_

test

On

emp

(

lower

(

job

));

3.

修改索引

修改索引使用

alter

index

完成。

为表建立索引后,随着对表不断进行更替、插入和删除动作,索引中国会产生越来越多的存储碎片,导致索引工作效率降低。这是可以采取重建索引和合并索引清除碎片。合并索引只是将

B

树中叶子节点的存储碎片合并在一起,并不会改变索引的物流组织结构。

合并索引:

Alter

index

index

_

test

Coalesce

deallocate

unused

;

重建索引:

Alter

index

index

_

test

rebuild

Tablespace

user

1;

重建索引时可以更改索引的类型,存储表空间等

4.

删除索引

删除索引使用

drop

index

语句。当索引过于碎片化,或者不经常被用到时,既可以删除索引:

Drop

index

index

_

test

注:删除表是也会删除其相应的索引。

5.

显示索引信息

为了显示索引的信息,

Oracle

提供了一系列数据字典视图,使用户了解索引的各方面信息。

1) 显示表的所有索引:显示

emp

的所有索引

Select

*

from

dba

_

indexs

where

owner

=’

EMP

2) 显示索引列:显示

index

_

test

所使用的索引列:

Select

*

from

user

_

ind

_

columns

where

index

_

name

=’

INDEX

_

TEST

3) 显示索引位置及大小

Select

*

from

user

_

segments

where

segment

_

name

=’

INDEX

_

TEST

4) 显示函数索引

Select

*

from

user

_

ind

_

expressions

where

index

_

name

=’

INDEX

_

TEST

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。