首页 > 编程知识 正文

pg查看索引,oracle修改索引

时间:2023-05-05 10:02:29 阅读:110652 作者:4512

一.索引介绍

1、索引相当于目录

2、索引通过一组排序的索引关键字提高了搜索效率,而不是默认的全表扫描搜索方法。

3、索引编制要适度。 变多会影响删除修改的效率,变少会影响查询的效率。 希望在取值分散的列中生成索引,不要在同一表中生成过度的索引

4、索引的使用对用户是透明的,并且系统确定什么时候使用该索引。

5、Oracle支持多种类型的索引,可以按照列数、索引值是否唯一以及索引数据的组织格式对索引进行分类,以满足各表和查询条件的要求。 (请参阅附件)

a .单列索引和复合索引

b.B树索引(create index时的默认类型) ) ) ) ) ) ) ) ) b.B树索引) ) ) ) ) ) b ) ) ) ) ) ) ) )。

无论查询条件如何,b树索引中的所有叶节点都具有相同的深度,因此查询速度大致相同。 另外,b树索引可以满足严格查询、模糊查询、比较查询等各种查询条件

--Unique唯一的索引值是唯一的,但允许为空值。 主键缺省具有唯一的索引,但列不能为空

- -非唯一:非唯一索引。 索引值是可重复的,允许为空。 缺省情况下,Oracle创建的索引不是唯一的

--Reverse Key :反向关键字索引。 通过在创建索引时指定" REVERSE "关键字,可以创建反向密钥索引,以反向存储每个已索引数据列的数据

,但保留原始数据列的顺序

c .位图索引(列值范围较小,以便应用性别政治方面,而不是默认的b树索引) )。

c .函数索引

如果需要频繁访问某些函数或表达式,可以将其保存在索引中,并在下次访问时计算其值,从而大大增加WHERE子句中包含函数或表达式的次数

表达式查询操作的速度

b树索引和位图索引都可以用于函数索引。

二.索引管理原则

要使用索引,请遵循以下基本原则:

1 .不需要在小表格上建立索引。

2 .对于撒娇者,如果经常查询的记录数小于表中记录总数的15%,则可以建立索引。 该比率不是绝对的,与全表扫描速度成反比。

3 .可以对大多数列的值不重复的列创建索引。

4 .对于基数较大的列,适合建立b树索引;对于基数较小的列,适合建立位图索引。

5 .列中有许多null值,必须为经常查询所有非null记录的列创建索引。

6 .无法对长列和长原始列进行索引。

7 .必须在连接查询频繁的列上创建索引。

使用CREATE INDEX语句创建查询时,将最频繁执行查询的列放在其它列之前。

9 .维护索引需要开销,特殊情况下对表进行插入和删除操作时,要限制表中的索引数量。 对于主要读取的表,索引多很有用,但如果一个表经常更改,则需要减少索引。

10 .在将数据插入表格后,创建索引。 如果在加载数据之前创建了索引,则Oracle每次插入每行时都必须更改每个索引。

三.长类型(可保存2G )主要用于不需要搜索字符串的长字符串数据,使用varchar2类型进行字符搜索,使用pstat1.setCharacterStream )方法保存这么长的字符串资料请参考附件P26

四.编制索引成文法如下:

CREATE INDEX语句的语法如下:

create [ unique ]|[ bitmap ] index index _ name

on table _ name ([ column1[ ASC|desc ],column2

[ASC|DESC],…] | [express] )

[TABLESPACE tablespace_name]

[PCTFREE n1]

[storage(initialn2 ) ]

[NOLOGGING]

[NOLINE]

[NOSORT];

五、

1、要查看索引信息,请在all_indexs表中

2 .显示被引用为索引信息的列all_ind_columns

3、查看函数索引信息all_ind_expressions

4、oracle的智能性很高,有时即使编制索引也不用。 例如,在数据量较少的情况下,可能不使用索引

5、进行全表扫描时,不使用索引效率更高

6、由于查询可能使用缓存,如果发现运行速度更快,则您的sql可能更好,也可能使用了缓存

7、使用plsql的“解释计划”功能,可以比较执行计划的消耗量,编写更好的sql

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