`
kiddwyl
  • 浏览: 402612 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

index和rowid的一点关系

阅读更多
相信很多朋友在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
分享到:
评论

相关推荐

    rowid与rownumber

    * INDEX 创建:使用 rowid 来创建索引,以提高查询效率。 * 数据迁移:使用 rowid 来迁移数据,以保持数据的一致性。 六、rownum 的应用 rownum 可以用于各种数据报表和查询,例如: * 分页:使用 rownum 来实现...

    Oracle学习笔记(rownum和rowid)

    Oracle学习笔记(rownum和rowid),有具体的代码案例讲解rownum和rowid

    利用rowid快速在线更新海量数据

    通过 ROWID 可以直接定位到表中的特定数据块和行,这对于提高数据检索和更新的效率至关重要。 #### 二、ROWID在更新操作中的应用 在本文所述的情境中,涉及到一张包含5亿条记录的大表 T1,以及另一张包含4.8亿条...

    Oracle数据库rowid深入探析.pdf

    "Oracle数据库rowid深入探析" Oracle数据库rowid是Oracle数据库中一个重要的概念,也是...Oracle数据库rowid是一个非常重要的概念,它可以帮助开发者更好地理解Oracle数据库的工作机理,并提高开发效率和数据库性能。

    Oracle中用Rowid查找和删除表中的重复记录

    ### Oracle中用Rowid查找和删除表中的重复记录 在Oracle数据库管理中,处理重复记录是一项常见的需求,尤其是在数据量较大的情况下。本文将详细介绍如何利用Rowid这一特性来有效地查找和删除表中的重复记录。 ####...

    mysql虚拟了一个rowid(类似跟oracle的rowid)--SQL语句.sql

    mysql虚拟了一个rowid(类似跟oracle的rowid)--SQL语句

    sql学习 08.TABLE ACCESS BY INDEX ROWID.sql

    sql学习 08.TABLE ACCESS BY INDEX ROWID.sql

    oracle_SQL中rowid与rownum的使用

    在Oracle SQL中,`ROWID`和`ROWNUM`是两个非常重要的概念,它们在数据库查询和数据操作中起着至关重要的作用。本文将详细探讨这两个特性,包括它们的定义、用途以及如何在实际场景中有效利用它们。 一、ROWID详解 `...

    rowid与rownum区别

    ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。

    oracle_SQL中ROWID与ROWNUM的使用

    **解释**:此查询将返回前两行记录,即 `ID` 为 `'200001'` 和 `'200002'` 的学生信息。 #### ROWNUM 在区间内的查询 如果需要查询 `ROWNUM` 在某区间内的数据,可以通过组合使用上述技巧实现: ```sql SELECT *...

    在oracle中灵活使用Rownum和rowId

    ### 在Oracle中灵活使用Rownum和RowId 在Oracle数据库中,`ROWNUM` 和 `ROWID` 是两个非常重要的概念,它们可以帮助我们在查询数据时实现更灵活的数据管理。本文将详细介绍这两个概念的区别及其使用方法,并通过...

    oracle error invalid rowid

    在处理"invalid rowid"错误时,理解Oracle的内部工作原理和数据库维护的最佳实践至关重要。这包括了解如何有效地使用数据库工具,以及如何编写健壮的SQL查询,以防止因并发和数据变更导致的问题。同时,定期备份...

    浅析Rowid在Oracle数据库中的应用.pdf

    Oracle数据库是全球广泛使用的关系型数据库管理系统,以其高级SQL支持、动态可伸缩性、高可用性和安全性著称。在Oracle中,Rowid扮演着关键角色,它是一种伪列,用于唯一标识数据库中的每一行记录。Rowid包含了记录...

    试论Rowid在Oracle数据库中的应用.pdf

    不过,因为Rowid是Oracle数据库特有的,如果在使用其他关系型数据库系统时,如MySQL或SQL Server,我们则无法找到类似的功能。因此,在进行跨数据库系统迁移或维护时,需要特别注意Rowid在不同系统间的差异。 综上...

    表按ROWID切片.txt

    对一个大表进行UPDATE,DELETE,如果在一个SESSION里面运行SQL,很容易引发undo不够, 或者由于一些原因,导致回滚,这个是灾难

    oraclerowid在表行中的物理标识.pdf

    此外,Oracle还提供了`DBMS_ROWID`包中的函数,例如`ROWID_OBJECT`、`ROWID_RELATIVE_FNO`、`ROWID_BLOCK_NUMBER`和`ROWID_ROW_NUMBER`,这些函数可以直接将ROWID转换为对应的10进制数值,便于理解: - `ROWID_...

    Oracle中的rowid

    ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。ROWID它是一个伪列,它并不实际存在于表中。它是ORACLE在读取表中...

Global site tag (gtag.js) - Google Analytics