相信很多朋友在rowid和index之间都会有些疑问,今天在warehouse大师的blog中看到一片简单扼要的文章,在这里跟大家共享一下,相信以下的说法可以解开不少开发人员的心结。
唯一index和非唯一index的index entry中尽管都存在rowid,但是其实有一点细微的差别,在唯一index中index_column就是index_column, 数据通过index_column排序;而在非唯一index中index_column其实是index_key+rowid,如果index_key相同,那么会使用rowid排序。
Data is returned in the ascending order of index columns. Multiple rows with identical values are sorted in ascending order by rowid.
--=======================================================
SQL> select /*+ index(a idx_tt) */ a.*,rowid from tt a where id<=2;
ID NAME AGE ROWID
---------- ---------- ---------- ------------------
1 a AAAD9yAAEAAAAAOAAA
1 a AAAD9yAAEAAAAAQAAC
2 a AAAD9yAAEAAAAAOAAB
2 a AAAD9yAAEAAAAAQAAD
执行计划
----------------------------------------------------------
Plan hash value: 6977672
--------------------------------------------------------------------------------
------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|
--------------------------------------------------------------------------------
------
| 0 | SELECT STATEMENT | | 2 | 12 | 5 (0)| 00:0
0:01 |
| 1 |
TABLE ACCESS BY INDEX ROWID| TT | 2 | 12 | 5 (0)| 00:0
0:01 |
|* 2 | INDEX RANGE SCAN | IDX_TT | 5 | | 1 (0)| 00:0
0:01 |
--------------------------------------------------------------------------------
------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("ID"<=2)
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
6 consistent gets
0 physical reads
0 redo size
695 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
4 rows processed
分享到:
相关推荐
Oracle学习笔记(rownum和rowid),有具体的代码案例讲解rownum和rowid
rowid与rownumber的介绍 rowid rownumber
举例介绍在oracle中rownum和rowId的不同以及使用方法
mysql虚拟了一个rowid(类似跟oracle的rowid)--SQL语句
sql学习 08.TABLE ACCESS BY INDEX ROWID.sql
利用rowid快速在线更新海量数据 利用rowid快速在线更新海量数据
oracle rowid rownum 等组成原理
Oracle数据库rowid深入探析.pdf
oracle 数据库 rowid与rownum的使用
ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。
oracle_SQL中ROWID与ROWNUM的使用 很有用哦
oracle_SQL中rowid与rownum的使用
总结一下几种查找和删除重复记录的方法,适用于有大量重复记录的情况
oracle error invalid rowid
对一个大表进行UPDATE,DELETE,如果在一个SESSION里面运行SQL,很容易引发undo不够, 或者由于一些原因,导致回滚,这个是灾难
ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。ROWID它是一个伪列,它并不实际存在于表中。它是ORACLE在读取表中...
rowid和主键有什么关联关系; 在主键的使用中存在哪些隐患; 如何来理解rowid的潜在瓶颈并调试验证。 本文要和大家一起讨论这几个问题,测试的环境基于MySQL 5.7.19版本。 问题1、如何感受到rowid的存在 我们...
oracle_SQL中 rowid 和rownum的使用