oracle 修索引改空间_「oracle索引」【Oracle笔记】索引的建立、修改、删除 - seo实验室...

oracle索引

一、概念和作用

在oracle索引是一种供服务器在表中快速查找一个行的数据库结构。合理使用索引能够大大提高数据库的运行效率。

在数据库中建立索引主要有以下作用。

(1)快速存取数据。

(2)既可以改善数据库性能,又可以保证列值的唯一性。

(3)实现表与表之间的参照完整性

(4)在使用orderby、groupby子句进行数据检索时,利用索引可以减少排序和分组的时间。

二、为什么能够提高查询速度

索引就是通过事先排好序,从而在查找时可以应用二分查找等高效率的算法。

一般的顺序查找,复杂度为O(n),而二分查找复杂度为O(log2n)。当n很大时,二者的效率相差及其悬殊。

三、建立索引

目的:提高对表的查询速度;对表有关列的取值进行检查。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

例如:create index big_index on big_data_tbl(id);

其中: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:不(能)排序(存储时就已按升序,所以指出不再排序)

注意:

一个基表不能建太多的索引;

空值不能被索引;

只有唯一索引才真正提高速度,一般的索引只能提高30%左右。

四、修改索引

修改索引的主要任务是修改已存在索引的存储参数适应增长的需要或者重新建立索引。ALTER [UNIQUE] INDEX [user.]index

[INITRANS n]

[MAXTRANS n]

REbuild

[STORAGE n]

其中:

REBUILD是根据原来的索引结构重新建立索引,实际是删除原来的索引后再重新建立。

提示:

DBA经常用REBUILD来重建索引可以减少硬盘碎片和提高应用系统的性能。

五、删除索引

当不需要时可以将索引删除以释放出硬盘空间。命令如下:DROP INDEX [schema.]indexname

注:当表结构被删除时,有其相关的所有索引也随之被删除。

六、索引建立原则总结

如果有两个或者以上的索引,其中有一个唯一性索引,而其他是非唯一,这种情况下oracle将使用唯一性索引而完全忽略非唯一性索引。

至少要包含组合索引的第一列(即如果索引建立在多个列上,只有它的第一个列被where子句引用时,优化器才会使用该索引)。

小表不要建立索引。

对于基数大的列适合建立B树索引,对于基数小的列适合简历位图索引。

列中有很多空值,但经常查询该列上非空记录时应该建立索引。

经常进行连接查询的列应该创建索引。

使用create index时要将最常查询的列放在最前面。

LONG(可变长字符串数据,最长2G)和LONG RAW(可变长二进制数据,最长2G)列不能创建索引。

限制表中索引的数量(创建索引耗费时间,并且随数据量的增大而增大;索引会占用物理空间;当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度)。

相关阅读

F.1字符函数——返回字符值(chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_subst

oracle序列参数:nextval和currval序列的两参数:nextval和currval。Nextval  returns the next  avaiable sequence value.It retu

一般使用oracle数据库时,用HR和SCOTT用户登录居多。在数据库中同样可以自己创建用户,然后分配相应的权限

例如我们要创建一个用户名

转自:https://www.cnblogs.com/pumushan/p/6655204.html

格式:MONTHS_BETWEEN(DATE1,DATE2)

MONTHS_BETWEEN函数返回两个日期之间

说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值