Hlavní nevýhodou ROWID je, že i když je normálně stabilní, může se za určitých okolností změnit:
- Tabulka je znovu sestavena (
ALTER TABLE MOVE
...) - Samozřejmě export/import
- Tabulka oddílů s povoleným pohybem řádků
Primární klíč identifikuje řádek logicky , vždy najdete správný řádek, a to i po smazání+vložení. ROWID identifikuje řádek fyzicky a není tak perzistentní jako primární klíč.
ROWID můžete bezpečně použít v jediném příkazu SQL, protože Oracle zaručí, že výsledek bude koherentní, například k odstranění duplikátů v tabulce. Pro jistotu bych vám doporučil používat pouze ROWID napříč příkazy když máte na řádku zámek (SELECT ... FOR UPDATE).
Z hlediska výkonu je přístup s primárním klíčem o něco dražší, ale obvykle si toho všimnete pouze tehdy, pokud provádíte mnoho přístupů na jeden řádek. Pokud je však výkon kritický, obvykle můžete v takovém případě získat větší užitek z použití zpracování sady než zpracování jednoho řádku s rowid. Zejména pokud je mezi DB a aplikací mnoho zpátečních cest, náklady na přístup k řádkům budou pravděpodobně zanedbatelné ve srovnání s náklady na zpáteční cesty.