在 Oracle 数据库中,索引(Index)是一个独立的数据库对象,用于提高查询数据的效率。索引是和表(Table)紧密相关的,一个表可以有多个索引,而每个索引都会关联到一个或多个表列。
在 Oracle 中,索引是与数据库用户(User)相关联的,索引所有者(Owner)是指创建该索引的数据库用户。当创建索引时,可以指定索引的所有者,也可以让系统默认使用当前用户作为索引所有者。如果您拥有系统权限或者具有足够的权限,可以通过查询 DBA_INDEXES 视图或 USER_INDEXES 视图来获取索引信息,其中 OWNER 列会显示索引所有者的用户名。
如何在ORACLE数据库的字段上建立索引
CREATE INDEX命令语法:
CREATE INDEX
CREATE [unique] INDEX [user]index
ON [user]table (column [ASC | DESC] [,column
[ASC | DESC] ] )
[CLUSTER [scheam]cluster]
[INITRANS n]
[MAXTRANS n]
[PCTFREE n]
[STORAGE storage]
[TABLESPACE tablespace]
[NO SORT]
Advanced
其中:
schema ORACLE模式,缺省即为当前帐户
index 索引名
table 创建索引的基表名
column 基表中的列名,一个索引最多有16列,long列、long raw
列不能建索引列
DESC、ASC 缺省为ASC即升序排序
CLUSTER 指定一个聚簇(Hash cluster不能建索引)
INITRANS、MAXTRANS 指定初始和最大事务入口数
Tablespace 表空间名
STORAGE 存储参数,同create table 中的storage
PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)
NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)
oracle没有锁不能建立索引,oracle中添加索引的时候加入online
在线方式创建索引,即使用online创建索引:CREATE INDEX 索引名 ON 表名(列名) online;
在线方式创建索引,锁的是行而非表,通过临时表进行索引的创建,所以不会影响DML *** 作,创建索引的速度慢一些
非在线方式创建索引,锁表,优先创建索引,此时DML都被阻塞,所以速度快。
MySQL56版本开始支持在线创建--Online DDL
ALTER TABLE table_name ADD INDEX , indea_name ,ALGORITHM=INPLACE,LOCK=NONE
ALGORITHM指定创建或删除索引得算法,有以下几类
索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;Oracle存储索引的数据结构是B树,位图索引也是如此,只不过是叶子节点不同B数索引;索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。
使用索引的目的:
1、加快查询速度
2、减少I/O *** 作
3、消除磁盘排序
4、何时使用索引
5、查询返回的记录数
6、排序表<40%
7、非排序表
<7%
8、表的碎片较多(频繁增加、删除)
以上就是关于oracle数据库索引种类,分别什么情况下使用全部的内容,包括:oracle数据库索引种类,分别什么情况下使用、如何正确地分析Oracle数据库模式,表及索引、oracle索引有owner吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)