コンセプトガイド から :
ROWIDの主な欠点は、通常は安定していますが、状況によっては変更される可能性があることです。
- テーブルが再構築されます(
ALTER TABLE MOVE
...) - 明らかにエクスポート/インポート
- 行移動が有効なパーティションテーブル
主キーは行を論理的に識別します 、削除+挿入後でも、常に正しい行が見つかります。 ROWIDは、行を物理的に識別します。 主キーほど永続的ではありません。
Oracleは結果の一貫性を保証するため、たとえばテーブル内の重複を削除するために、単一のSQLステートメントでROWIDを安全に使用できます。安全のために、ROWIDaccrossステートメントのみを使用することをお勧めします。 行にロックがある場合(SELECT ... FOR UPDATE)。
パフォーマンスの観点から、主キーへのアクセスは少し高価ですが、通常、単一行へのアクセスを多く行う場合にのみこれに気付くでしょう。ただし、パフォーマンスが重要な場合は、通常、ROWIDを使用した単一行処理よりも、セット処理を使用する方が大きなメリットを得ることができます。特に、DBとアプリケーションの間に多くのラウンドトリップがある場合、行アクセスのコストは、ラウンドトリップのコストと比較しておそらく無視できるでしょう。