0

次の質問をするとき、rowid の定義について混乱しています。どちらが正しいですか?

ROWID は次のとおりです。 1.データベースから取得される各行に関連付けられたシーケンス番号の形式の整数。
2. データベース データ ファイル内の行の物理的な位置を示す base-64 数値。

4

1 に答える 1

1

rownum と rowid を混同しています。

ROWID 疑似列は行のアドレスを返します。Oracle DatabaseのROWID値には、行の検索に必要な情報が含まれています。

https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm

ROWNUM 疑似列は、Oracleが表または結合された行のセットから行を選択する順序を示す数値を返します

https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm

select rowid, rownum, name from sys.system_privilege_map
where rownum < 10;

ROWID   ROWNUM  NAME
AAAAFtAABAAAAiBADP  1   FLASHBACK ARCHIVE ADMINISTER
AAAAFtAABAAAAiBADO  2   ALTER DATABASE LINK
AAAAFtAABAAAAiBADN  3   ALTER PUBLIC DATABASE LINK
AAAAFtAABAAAAiBADM  4   ADMINISTER SQL MANAGEMENT OBJECT
AAAAFtAABAAAAiBADL  5   UPDATE ANY CUBE DIMENSION
AAAAFtAABAAAAiBADK  6   UPDATE ANY CUBE BUILD PROCESS
AAAAFtAABAAAAiBADJ  7   DROP ANY CUBE BUILD PROCESS
AAAAFtAABAAAAiBADI  8   CREATE ANY CUBE BUILD PROCESS
AAAAFtAABAAAAiBADH  9   CREATE CUBE BUILD PROCESS

ROWID がクエリで使用されることはほとんどありません。一方、ROWNUM は、上記のように、結果の数を制限するために非常に頻繁に使用されます。

于 2014-12-12T01:51:43.697 に答える