Główną wadą ROWID jest to, że chociaż jest zwykle stabilny, może się zmienić w pewnych okolicznościach:
- Tabela została przebudowana (
ALTER TABLE MOVE
...) - Eksportuj / importuj oczywiście
- Tabela partycji z włączonym ruchem wierszy
Klucz podstawowy identyfikuje wiersz logicznie , zawsze znajdziesz właściwy wiersz, nawet po usunięciu + wstaw. ROWID identyfikuje wiersz fizycznie i nie jest tak trwały jak klucz podstawowy.
Możesz bezpiecznie użyć ROWID w pojedynczej instrukcji SQL, ponieważ Oracle zagwarantuje, że wynik będzie spójny, na przykład w celu usunięcia duplikatów w tabeli. Na wszelki wypadek sugeruję, abyś używał tylko ROWID wyrażeń krzyżowych gdy masz blokadę w rzędzie (WYBIERZ ... DO AKTUALIZACJI).
Z punktu widzenia wydajności dostęp do klucza podstawowego jest nieco droższy, ale zwykle zauważysz to tylko wtedy, gdy wykonujesz dużo dostępu do jednego wiersza. Jeśli jednak wydajność jest krytyczna, zwykle można uzyskać większe korzyści w takim przypadku z przetwarzania zestawu niż przetwarzania pojedynczego wiersza z rowid. W szczególności, jeśli istnieje wiele podróży w obie strony między bazą danych a aplikacją, koszt dostępu do wiersza będzie prawdopodobnie pomijalny w porównaniu z kosztem podróży w obie strony.