Bạn không thể kiểm soát một cách đáng tin cậy theo thứ tự Oracle truy xuất dòng của bảng mà không có ORDER BY
.
Hơn nữa, không có /*+APPEND*/
gợi ý, Oracle sẽ lưu trữ vật lý các hàng trong một bảng heap nơi có chỗ trống, có thể không nằm ở cuối bảng! Bạn có thể nghĩ rằng Oracle sẽ chèn chúng theo tuần tự nhưng bất kỳ DML nào hoặc hoạt động đồng thời nào (chèn 2 phiên trở lên) có thể tạo ra một tổ chức vật lý khác.
Bạn có thể sử dụng bảng INDEX ORGANIZED để lưu trữ các hàng theo thứ tự của PK. Hầu hết các truy vấn đơn giản sau đó trên bảng đó sẽ tạo ra một tập hợp các hàng đã được sắp xếp. Tuy nhiên, điều này sẽ không đảm bảo rằng oracle sẽ chọn các hàng theo thứ tự đó nếu bạn không chỉ định ORDER BY (tùy thuộc vào truy vấn và đường dẫn truy cập, các hàng có thể có thứ tự bất kỳ).
Bạn cũng có thể sử dụng chế độ xem có thứ tự theo, đây có lẽ là cách tốt nhất của bạn nếu bạn không thể chạm vào ứng dụng (đổi tên bảng, tạo chế độ xem với tên của bảng, để ứng dụng nghĩ rằng nó truy vấn bảng). Tôi không biết liệu nó có khả thi trong trường hợp của bạn không.