索引

mac2022-06-30  128

1.索引

索引是数据库管理系统提供的一种用来快速访问表中数据的方式。它可以提高查询效率、减少磁盘IO操作、提升数据库的性能等。

数据库的访问方式有两种,顺序访问方式和索引访问方式。顺序访问方式就好像一页一页的翻书,直到找到相应的页码。而索引访问方式就好比通过书签来对书进行查询。 索引访问方式有很多优点:

加快检索数据的速度使用唯一索引可以保证数据库中每一行数据的唯一性通过索引可以加快表之间的连接

2.索引原理

在Oracle数据库的表中,每张表都有一个rowid,用来唯一标识一条数据所在物理位置的id号,每一行数据的rowid值是固定且唯一的。一旦数据插入表中该值就不会改变。除非表发生移动或者表空间变化等,才会发生改变。

我们可以使用内置函数rowidtocher查询rowid值并输出:

select rowidtocher(rowid) v_rowid,x.* from emp x;

当检索数据时,Oracle首先对索引中的列进行快速的检索,因为索引已经排序,所以可以使用各种快速搜索算法,这样可以避免全表搜索。找到检索的数据后,通过rowid在emp表中读出详细的信息。

3.索引创建

1.自动创建:在定义主键约束(primary key)或者唯一约束(unique)时,Oracle会自动在列上建立索引。 2.手动创建:手动创建索引

索引可以分为单列索引、复合索引和函数索引等,我们可以通过下列语句创建索引:

-- 单列索引:基于单列创建索引 create index index1_emp on emp(empno); -- 复合索引:基于多列创建所以 create index index2_emp on emp(empno,ename); -- 函数索引:索引是通过某列的函数值得到的 create index index3_emp on emp(upper(ename));

注意:创建复合索引时,索引的相对顺序决定了索引的性能,通常将搜索频率大的列放在前面。

4.修改索引

4.1 重命名

将索引index1_emp重命名为my_index1_emp:

alter index index1_emp rename to my_index1_emp;

4.2 合并重建索引

随着表的使用,必然有一些索引需要改变,就需要对索引进行修改 合并索引:不会改变索引的物理结构,只是将索引碎片合并在一起 重建索引:删除原来的索引,并新建

--合并索引 alter index index2_emp COALESCE;

注意:合并没有改变索引的物理结构 重建索引就是先删除原来的索引,在重新建立一个新的索引。因为发生了删除操作,所以物理结构可以发生改变。

--重建索引 alter index index1_emp REBUILD;

可以使用存储语句改变索引的表空间:

--重建索引 alter index index1_emp REBUILD TABLESPACE ENSEMBLE;

4.3 删除索引

删除索引使用DROP INDEX语句

-- 删除索引 drop index index3_emp;

对于唯一性的索引,如果索引是Oracle自动建立的,那么我们可以通过使用disable禁用约束或者删除约束的方法来删除对应的索引。当删除表时,该表的索引也会被删除。

--禁用/启用约束 alter table emp enable CONSTRAINT index3_emp; alter table emp disable CONSTRAINT index3_emp; -- 删除约束 alter table emp drop CONSTRAINT index3_emp;

转载于:https://www.cnblogs.com/xpeng-V/p/7349690.html

最新回复(0)