相信很多朋友在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
分享到:
相关推荐
* INDEX 创建:使用 rowid 来创建索引,以提高查询效率。 * 数据迁移:使用 rowid 来迁移数据,以保持数据的一致性。 六、rownum 的应用 rownum 可以用于各种数据报表和查询,例如: * 分页:使用 rownum 来实现...
Oracle学习笔记(rownum和rowid),有具体的代码案例讲解rownum和rowid
通过 ROWID 可以直接定位到表中的特定数据块和行,这对于提高数据检索和更新的效率至关重要。 #### 二、ROWID在更新操作中的应用 在本文所述的情境中,涉及到一张包含5亿条记录的大表 T1,以及另一张包含4.8亿条...
"Oracle数据库rowid深入探析" Oracle数据库rowid是Oracle数据库中一个重要的概念,也是...Oracle数据库rowid是一个非常重要的概念,它可以帮助开发者更好地理解Oracle数据库的工作机理,并提高开发效率和数据库性能。
### Oracle中用Rowid查找和删除表中的重复记录 在Oracle数据库管理中,处理重复记录是一项常见的需求,尤其是在数据量较大的情况下。本文将详细介绍如何利用Rowid这一特性来有效地查找和删除表中的重复记录。 ####...
mysql虚拟了一个rowid(类似跟oracle的rowid)--SQL语句
sql学习 08.TABLE ACCESS BY INDEX ROWID.sql
在Oracle SQL中,`ROWID`和`ROWNUM`是两个非常重要的概念,它们在数据库查询和数据操作中起着至关重要的作用。本文将详细探讨这两个特性,包括它们的定义、用途以及如何在实际场景中有效利用它们。 一、ROWID详解 `...
ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。
**解释**:此查询将返回前两行记录,即 `ID` 为 `'200001'` 和 `'200002'` 的学生信息。 #### ROWNUM 在区间内的查询 如果需要查询 `ROWNUM` 在某区间内的数据,可以通过组合使用上述技巧实现: ```sql SELECT *...
### 在Oracle中灵活使用Rownum和RowId 在Oracle数据库中,`ROWNUM` 和 `ROWID` 是两个非常重要的概念,它们可以帮助我们在查询数据时实现更灵活的数据管理。本文将详细介绍这两个概念的区别及其使用方法,并通过...
在处理"invalid rowid"错误时,理解Oracle的内部工作原理和数据库维护的最佳实践至关重要。这包括了解如何有效地使用数据库工具,以及如何编写健壮的SQL查询,以防止因并发和数据变更导致的问题。同时,定期备份...
Oracle数据库是全球广泛使用的关系型数据库管理系统,以其高级SQL支持、动态可伸缩性、高可用性和安全性著称。在Oracle中,Rowid扮演着关键角色,它是一种伪列,用于唯一标识数据库中的每一行记录。Rowid包含了记录...
不过,因为Rowid是Oracle数据库特有的,如果在使用其他关系型数据库系统时,如MySQL或SQL Server,我们则无法找到类似的功能。因此,在进行跨数据库系统迁移或维护时,需要特别注意Rowid在不同系统间的差异。 综上...
对一个大表进行UPDATE,DELETE,如果在一个SESSION里面运行SQL,很容易引发undo不够, 或者由于一些原因,导致回滚,这个是灾难
这强调了ROWID与数据存储位置的紧密关系。 当我们需要从ROWID中获取具体信息时,可以利用Oracle提供的工具或直接计算。例如,可以通过查询数据字典表来验证通过ROWID计算出的数据对象ID、相对文件编号和块编号是否...
此外,Oracle还提供了`DBMS_ROWID`包中的函数,例如`ROWID_OBJECT`、`ROWID_RELATIVE_FNO`、`ROWID_BLOCK_NUMBER`和`ROWID_ROW_NUMBER`,这些函数可以直接将ROWID转换为对应的10进制数值,便于理解: - `ROWID_...