Uit de conceptengids :
Het belangrijkste nadeel van een ROWID is dat hoewel het normaal stabiel is, het onder bepaalde omstandigheden kan veranderen:
- De tabel is opnieuw opgebouwd (
ALTER TABLE MOVE
...) - Uiteraard exporteren / importeren
- Verdelingstabel met inschakelen rijverplaatsing
Een primaire sleutel identificeert een rij logisch , vindt u altijd de juiste rij, ook na een delete+insert. Een ROWID identificeert de rij fysiek en is niet zo persistent als een primaire sleutel.
U kunt ROWID veilig gebruiken in een enkele SQL-instructie, aangezien Oracle garandeert dat het resultaat coherent is, bijvoorbeeld om duplicaten in een tabel te verwijderen. Voor de zekerheid raad ik je aan om alleen de ROWID over-statements te gebruiken wanneer je een slot op de rij hebt (SELECT ... VOOR UPDATE).
Vanuit prestatieoogpunt is de toegang tot de primaire sleutel iets duurder, maar dit merk je normaal gesproken alleen als je veel toegang hebt tot één rij. Als prestaties echter van cruciaal belang zijn, kunt u in dat geval meestal meer voordeel halen uit het gebruik van setverwerking dan verwerking van één rij met rowid. In het bijzonder, als er veel retourvluchten zijn tussen de DB en de applicatie, zullen de kosten van toegang tot de rijen waarschijnlijk verwaarloosbaar zijn in vergelijking met de retourkosten.