Từ hướng dẫn khái niệm :
Hạn chế chính của ROWID là mặc dù bình thường ổn định, nhưng nó có thể thay đổi trong một số trường hợp:
- Bảng được tạo lại (
ALTER TABLE MOVE
...) - Xuất / Nhập rõ ràng
- Bảng phân vùng có bật tính năng di chuyển hàng
Khóa chính xác định một hàng một cách hợp lý , bạn sẽ luôn tìm thấy hàng chính xác, ngay cả sau khi xóa + chèn. ROWID xác định hàng vật lý và không bền như khóa chính.
Bạn có thể sử dụng ROWID một cách an toàn trong một câu lệnh SQL vì Oracle sẽ đảm bảo kết quả là nhất quán, chẳng hạn để loại bỏ các bản sao trong một bảng. Để an toàn, tôi khuyên bạn chỉ nên sử dụng ROWID báo cáo tổng hợp khi bạn có một khóa trên hàng (CHỌN ... ĐỂ CẬP NHẬT).
Từ quan điểm hiệu suất, quyền truy cập vào Khóa chính đắt hơn một chút nhưng thông thường bạn sẽ chỉ nhận thấy điều này nếu bạn thực hiện nhiều truy cập hàng đơn lẻ. Mặc dù vậy, nếu hiệu suất là quan trọng, bạn thường có thể nhận được lợi ích lớn hơn trong trường hợp đó từ việc sử dụng xử lý theo bộ so với xử lý hàng đơn với rowid. Đặc biệt, nếu có nhiều đường vòng giữa DB và ứng dụng, chi phí truy cập hàng có thể sẽ không đáng kể so với chi phí đi vòng.