欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

oracle优化三(访问表方式)

墨初 知识笔记 86阅读

ORACLE以三种方式访问表中的记录:全表扫描、ROWID访问表和索引扫描。-ascii-theme-font : minor-Latin;MSO-far east-font-family : 宋体;MSO-Fareast-theme-font : minor-Fareast;MSO-汉斯-font-family : Calibri;MSO-Hansi-Theme-Font : minor-Latin)全表扫描是按顺序访问表中的每条记录。ORACLE通过一次读取多个数据块来优化全表扫描。按ROWID的表访问。

me-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">行的ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID来存取数据(表中记录的物理位置信息)可以快速定位到目标数据上,是Oracle存取单行数据的最快方法。

为了通过ROWID存取表,Oracle 首先要获取被选择行的ROWID,或者从语句的WHERE子句中得到,或者通过表的一个或多个索引的索引扫描得到。Oracle然后以得到的ROWID为依据定位每个被选择的行。

 

索引扫描(Index scan

我们先通过index查找到数据对应的rowid(对于非唯一索引可能返回多个rowid),然后根据rowid直接从表中得到具体的数据,这种查找方式称为索引扫描或索引查找(index lookup)。一个rowid唯一的表示一行数据,该行对应的数据块是通过一次i/o得到的,在此情况下该次i/o只会读取一个数据库块。

在索引中,除了存储每个索引的值外,索引还存储具有此值的行对应的ROWID值。索引扫描可以由2步组成:(1) 扫描索引得到对应的rowid值。 (2) 通过找到的rowid从表中读出具体的数据。

标签:
声明:无特别说明,转载请标明本文来源!