请教高手oracle 创建了索引后在使用SELECT,UPDATE,DELETE和INSERT语句时性能影响上有啥不同?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教高手oracle 创建了索引后在使用SELECT,UPDATE,DELETE和INSERT语句时性能影响上有啥不同?相关的知识,希望对你有一定的参考价值。

参考技术A 创建了索引后

UPDATE,DELETE和INSERT 性能可能会略微降低一点点. 也可能不影响

SELECT 性能可能会提高不少, 也可能提高一点点, 也可能一点影响也没有, 甚至也有可能降低.

具体影响 要考虑很多个方面。
例如你有一个表 TEST ( A int, B int, C varchar2 )

你在 C 这一列 上面创建了索引。

那么首先, DELETE和INSERT , 是肯定要更新索引数据的。 因此会 性能会略微降低一点点。

UPDATE, 如果是 SET C='...' , 如果 要更新索引数据的。 因此会 性能会略微降低一点点。
如果是 SET A = ... , 和索引列无关的, 那么就没影响。

置于 SELECT
如果数据量很大, 比如 千万行, 每一个 C 都不一样。
你只需要检索一行
例如
SELECT * FROM test WHERE c = 'a000000001';
那么有索引,性能可能会提高不少。

如果数据量不大, 也就几万行,
那么有索引,性能可能会提高一点点。

如果你使用了函数
SELECT * FROM test WHERE LOWER (c) = 'a000000001';
那么, 有索引和没索引一样。

如果数据量很大, 比如 千万行, 很多 C 都一样。 例如只有10种C
你需要检索某种 c 的数据
例如
SELECT * FROM test WHERE c = 'a1';
那么有索引,性能可能会降低.本回答被提问者采纳

如何给oracle建立索引?建立索引后查询表施应该怎样使用,请高手解答,谢谢(不要百度内容)

参考技术A 建索引的语法这个baidu一下就可以了,主键字段自动索引.

使用索引一般是在查询条件里加上 索引字段='某个值' 就可以使用索引了,不过直接看sql是看不出来的。你可以看sql的执行计划了解oracle是准备怎么执行该SQL的。
参考技术B 数据库表一般都在建立的时候主键是自动生成索引的,你也可以后来添加索引化视图 跟创建数据库表 一样后面 加一句 organization index追问

如何使用索引?

追答

你是说如何 查找索引吗

追问

嗯 对的,我现在又张表建立了索引,我不知道如何去使用。我不知道怎么用sql语句去查询。

追答

创建索引不是为了在语句中用的,而是可以大大提高系统的性能。

本回答被提问者采纳

以上是关于请教高手oracle 创建了索引后在使用SELECT,UPDATE,DELETE和INSERT语句时性能影响上有啥不同?的主要内容,如果未能解决你的问题,请参考以下文章

请教各位高手 oracle 存储过程 如何获得 捕获异常的内容

ORACLE EBS(ERP)销售订单和外部接口怎么实现,外单位数据过来后自动生成销售订单,请教高手?

oracle数据库中的instr的具体用法,在网上搜了很多,最终还是不明白,请教高手解释。

Win7 家庭高级版安装 Oracle 11g 怎么弄?请教高手解决!!谢谢!紧急。。。

请教oracle高手 在oracle里怎么样用一个插入语句插入两表里的数据

oracle 创建表提示字元无效,求高手指点迷精。