oracle取10%的数据,Oracle 10gR2 查找数据的方法

在Oracle 10g有几种查找数据的方法,了解这些查找数据的方法,有利于我们读懂执行计划,并通过执行计划来优化我们的ORacle数据库系统。

查找数据主要有一下方式:

1,全表扫描和RowId查找数据

2,通过索引查找数据

1.1 全表扫描(Full Table Scans)

有时Oracle数据库在评估最优执行计划时,当去取大量数据时,就会优先考虑使用全表扫描,因为这时全表扫描是最优的。一般取出的数据占表的数据5%--10%左右会发生表扫描,一般在OLTP系统中尽量避免表扫描。

为了更好的使用表扫描,提高效率,在oracle 中有好几种分区方法,提高表扫描的效率,让表按具体业务逻辑来分区,尽量做到分区消除,减少表扫描的大小,提高性能。

1.2 ROWID查找数据(Table Access by ROWID或 Rowid lookup)

行ROWID是行数据在数据库文件,数据块和行在块的具体位置,所以是Oracle最快的定位方法。

这种方法只能一次读取一个IO,不会涉及多个IO。

目前通过索引查找,主要有5种索引查找方式:

1,索引唯一查找(index unique scan)

2,索引范围查找 (index range scan)

3,索引全部扫描 (index full scan)

4,索引快速扫描  (index fast full scan)

5,索引跳跃式查找 (index skip scan)

2.1 ,索引唯一查找(index unique scan)

当查询列是 如果存在UNIQUE 或PRIMARY KEY 约束(它保证了语句只存取单行)的话,Oracle经常实现唯一性扫描。此查找方法效率很高。

2.2 ,索引范围查找 (index range scan)

使用一个索引存取多行数据,在唯一索引上使用索引范围扫描的典型情况下是在谓词(where限制条件)中使用了范围操作符(如>、、>=、<=、between)

2.3, 索引全部扫描 (index full scan)

全索引扫描。对查询出的数据进行排序,而且此时查询出的数据都必须从索引中可以直接得到。同时order by排序的数据应该是按索引的顺序来读取的。如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值