Från konceptguiden :
Den största nackdelen med en ROWID är att även om den normalt är stabil kan den ändras under vissa omständigheter:
- Tabellen är ombyggd (
ALTER TABLE MOVE
...) - Exportera/importera självklart
- Partitionstabell med radförflyttning aktiverad
En primärnyckel identifierar en rad logiskt , hittar du alltid rätt rad, även efter en delete+insert. En ROWID identifierar raden fysiskt och är inte lika beständig som en primärnyckel.
Du kan säkert använda ROWID i en enda SQL-sats eftersom Oracle garanterar att resultatet är sammanhängande, till exempel för att ta bort dubbletter i en tabell. För att vara på den säkra sidan skulle jag föreslå att du bara använder ROWID accross-satser när du har ett lås på raden (VÄLJ ... FÖR UPPDATERING).
Ur prestandasynpunkt är den primära nyckelåtkomsten lite dyrare men du kommer normalt bara att märka detta om du gör mycket åtkomst på en rad. Om prestandan dock är kritisk kan du vanligtvis få större fördelar i så fall av att använda uppsättningsbearbetning än bearbetning med en rad med rowid. I synnerhet, om det finns många tur och retur mellan DB och applikationen, kommer kostnaden för radåtkomst troligen att vara försumbar jämfört med kostnaden för tur och retur.