189 8069 5689

oracle怎么改索引,oracle 修改索引名称

如何改善Oracle的索引

1、速度因素 PARALLEL选项:当创建索引时,Oracle首先会进行全表扫描来收集符号键和ROWID对,而PARALLEL选项允许多处理器并行扫描表,这样就会加速索引的创建过程。一般推荐的PARALLEL值为CPU数减1。 NOLOGGING选项:NOLOGGING选项因为不写日志,所以大大提高了性能,比不使用NOLOGGING选项大约会节省70%的时间。使用NOLOGGING创建索引的唯一风险就是如果数据库需要做前滚恢复,你将不得不重建索引。 2、空间和结构因素 COMPRESS选项:COMPRESS选项用于在创建非唯一性索引时压缩重复值。对于连接索引(即索引包含多列)来说,COMPRESS选项会使索引的大小减少一半以上。COMPRESS选项也可以设置连接索引的前置长度。 使用大BLOCKSIZE的表空间:将索引建立在大BLOCKSIZE的表空间上,将大大降低索引树的层次。 在$ORACLE_HOME/network/admin/中创建protocol.ora文件﹐其内容如下﹕ tcp.validnode_checking=yes #下面两行取其一:

创新互联专注骨干网络服务器租用10余年,服务更有保障!服务器租用,服务器托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。

oracle 单列索引怎么修改成多列索引

不能直接修改,只能先drop单列的index.

再创建多列的复合索引。

oracle中如何将主码的索引由升序改为降序?

创建索引的时候指定啊。

create

index

索引名

on

表名(列名

desc);--desc就指定是降序的。

可以测试:

在表的一列上建个降序索引。建个非空约束。查找该列,查询执行计划,是索引全扫描。查出来的数据是从大玩小查出来的。

CREATE

TABLE

ttt(ID

NUMBER);

ALTER

TABLE

TTT

MODIFY

ID

NOT

NULL;

CREATE

INDEX

idx_ttt

ON

ttt(ID

DESC);

BEGIN

FOR

i

IN

1

..

100

LOOP

INSERT

INTO

ttt

(id)

VALUES

(i);

END

LOOP;

COMMIT;

END;

/

BEGIN

dbms_stats.gather_table_stats(ownname

=

'HR',

tabname

=

'TTT');

dbms_stats.gather_index_stats(ownname

=

'HR',

indname

=

'IDX_TTT');

END;

/

SELECT

t.id

FROM

ttt

t;--查看执行计划,索引全扫描。

--查询出来的数据是从100往1方向的。

SELECT

/*+no_index(t

idx_ttt)*/t.id

FROM

ttt

t;--查看执行计划,全表扫描

--查询出来的数据是从1往100方向的。

oracle 数据库如何建立索引 如何用索引?

创建索引语法:

CREATE [UNIQUE] | [BITMAP] INDEX index_name

--unique表示唯一索引

ON table_name([column1 [ASC|DESC],column2

--bitmap,创建位图索引

[ASC|DESC],…] | [express])[TABLESPACE tablespace_name][PCTFREE n1]

--指定索引在数据块中空闲空间

[STORAGE (INITIAL n2)][NOLOGGING]

--表示创建和重建索引时允许对表做DML操作,默认情况下不应该使用

[NOLINE][NOSORT];

--表示创建索引时不进行排序,默认不适用,如果数据已经是按照该索引顺序排列的可以使用

扩展资料:

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

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

3、小表不要简历索引

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

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

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

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

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

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

oracle数据库如何重建索引

当索引的碎片过多时,会影响执行查询的速度,从而影响到我们的工作效率。这时候采取的最有利的措施莫过于重建索引了。本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程,接下来我们就开始介绍这一过程。 重建索引的步骤如下: 1. 确认基本信息 登入数据库,找到专门存放index 的tablespace,并且这个tablespace下所有index的owner都是tax.将index专门存放在一个独立的tablespace, 与数据表的tablespace分离,是常用的数据库设计方法。 2. 查找哪些index需要重建 通过anlyze index .... validate structure命令可以分析单个指定的index,并且将单个index 分析的结果存放到 index_stats试图下。一般判断的依据是: height 4 pct_used 50% del_lf_rows / lf_rows +0.001 0.03 g ) 3. google上下载了遍历所有index脚本 发现anlyze index .... validate structure只能填充单个index分析信息,于是google了下,从网上下了个Loop 脚本,遍历索引空间下所有的索引名字,并且可以把所有index的分析信息存放到自己建立的一个用户表中。 4. anlyze index 锁定index 发现下载的脚本不好用,应为anlyze index在分析索引前要争取独占锁,锁住index,很明显有些index正在被应用系统的使用,所以运行anlyze失败。这里吸取的教训是,尽量晚上做这种事。但是本人比较喜欢准时回家,所以在语句中添加Exception Handler,抛出anlyze index执行失败的那些index 名称,使脚本正常运行完毕。并且根据打印到前台的index name手动执行那些index分析。 5. 总结 虽然发现522个index中有160个符合上面的判断的依据。但是发现索引都不大,而那些拥有百万leaf的索引又没有符合上面的判断条件,所以结论是无需index rebuild online. 没有啥碎片。 6.什么时候可以rebuild index呢? rebuild index online,对那些有大量DML操作的大索引是有益的。可以每个月季度做一次针对较大索引的rebuild。

请教:oracle中如何重新创建索引?

------索引名不能重复,如果要重新建同名索引,必须把以前的索引删掉在建索引

-----删除索引

drop index 索引名;

-----创建索引

create index 索引名 on 表名 (表中的字段,表中的字段)

tablespace 指定的表空间

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

);


文章标题:oracle怎么改索引,oracle 修改索引名称
当前链接:http://cdxtjz.cn/article/dsepeoh.html

其他资讯