oracle表加索引反而查询慢的原因
来源:互联网 发布:ping不涉及的网络协议 编辑:程序博客网 时间:2024/06/13 00:39
这两天在大数据库的查询,有几个存储过程查询下来用了好几分钟。一看表,好像索引比较少,就使劲加了些,发现加了反而查询速度更慢了。其实我们只要懂得索引的原理便可以知道索引不是想随便加就加。下面看一下索引的一些原理,我们就可以知道或许你也犯了同样的加了索引反而速度更慢的错:
当用户从数据表中查询数据时,Oracle数据库提供了两种查询的方式。一是从表中读取每一行,就是大家常说的全表扫描;二是通过ROWID一此读取一行。当表中记录比较多的时候,很明显第二种方式能够更快的定位记录内容。而索引其实就是建立在这个查询原理之上的。如现在某个表中有300多万条记录,而现在用户可能只需要了解其中的10条记录信息。此时如果使用索引标识读取的块,则可以执行比较少的I/O,数据库系统会很快找到用户所需要的内容。而如果没有使用索引的话,则需要读取表中所有的块。
如果在这个表中加入了索引,那么到底对数据库的性能影响有多大呢?这个就不好说了,因为其跟很多因素相关。如跟数据选择性直接相关。如果用户的数据非常具有选择性,则表中家功能只有很少的行匹配索引值,则Oracle将能够快速查询匹配所引值得ROWID的索引,并且可以快速查询少量的相关表快。如还是上面这个表中,其如果存储有某个市的所有常住人口信息,其中身份证号码肯定是少不了的。如此时用户想根据身份证号码来查询某个人的信息时,那么数据库能够在很短的时间内给出响应。这主要是因为用户提供的数据非常具有选择性,基本上跟数据库中的索引值是一一对应的。而如果用户想通过出身年月信息来查询信息的话,则其数据库反映的速度就会比较慢了。
可见索引对数据库性能的影响直接跟数据的选择性挂钩。这对于数据库管理员设计索引时很有启发性。如数据库管理员在设计索引时,最好能够选择哪些具有唯一性的字段或者重复性比较少的字段。如此的话,索引对于数据库性能来说才有比较大的价值。
- oracle表加索引反而查询慢的原因
- 【Oracle 11g】为何加了索引反而查询变慢
- 为何加索引后反而更慢
- Oracle查询慢的原因
- oracle 表查询变慢的原因-项目
- Oracle查询慢的原因总结
- Oracle查询慢的原因总结
- Oracle查询速度慢的原因总结
- Oracle查询速度慢的原因总结
- oracle 查询慢的原因总结
- oracle 查询慢的原因总结
- oracle 查询慢的原因总结
- 解析解和有些人那么值钱的原因,及解决ORACLE加了索引还是非常慢
- 2015-12-2oracle数据删除后,100万的数据只剩10条,查询速度反而变慢
- oracle查询表中某一特定类型的数据特别慢,也没找到原因
- 查询速度慢的原因
- 数据库查询慢的原因
- sql查询慢的原因
- 讨论:如何理解MVC和三层?
- check的jtable
- 探索PropertyGrid的使用
- 我的个人博客站`
- 又是dwr,这回让我郁闷的是DWRUtil.useLoadingMessage
- oracle表加索引反而查询慢的原因
- 给未来儿子的一封信
- C语言编译全过程
- 最近N95掉了,郁闷,还好整了个山寨,通过多方软件,终于把MTK刷得成功了,比以前的N95还安逸呵呵
- Smarty安装配置方法
- Eclipse 3.3 汉化包下载
- NHibernate中使用事务
- Start with WinMain
- C++程序员的必备工具【转】