Row_Number() OVER (ORDER BY (SELECT 1))
mẹo không nên KHÔNG được coi là một cách để tránh thay đổi thứ tự của dữ liệu cơ bản. Nó chỉ là một phương tiện để tránh khiến máy chủ thực hiện sắp xếp bổ sung và không cần thiết (nó có thể vẫn thực hiện sắp xếp nhưng sẽ tốn số tiền tối thiểu có thể so với sắp xếp theo cột).
Tất cả các truy vấn trong máy chủ SQL TUYỆT ĐỐI PHẢI có ORDER BY
mệnh đề trong truy vấn ngoài cùng để các kết quả được sắp xếp một cách đáng tin cậy theo cách đảm bảo.
Khái niệm "giữ lại thứ tự ban đầu" không tồn tại trong cơ sở dữ liệu quan hệ. Các bảng và truy vấn phải luôn được coi là không có thứ tự cho đến khi và trừ khi có ORDER BY
mệnh đề được chỉ định trong truy vấn ngoài cùng.
Bạn có thể thử cùng một truy vấn không có thứ tự 100.000 lần và luôn nhận được nó với cùng một thứ tự, và do đó bạn tin rằng bạn có thể dựa vào thứ tự đã nói. Nhưng đó sẽ là một sai lầm, bởi vì một ngày nào đó, một cái gì đó sẽ thay đổi và nó sẽ không có thứ tự như bạn mong đợi. Một ví dụ là khi cơ sở dữ liệu được nâng cấp lên phiên bản SQL Server mới - điều này đã khiến nhiều truy vấn thay đổi thứ tự của nó. Nhưng nó không phải là một sự thay đổi lớn. Một cái gì đó nhỏ như thêm hoặc xóa một chỉ mục có thể gây ra sự khác biệt. Và hơn thế nữa:Cài đặt gói dịch vụ. Phân vùng bảng. Tạo một dạng xem được lập chỉ mục bao gồm bảng được đề cập. Đạt đến một số điểm giới hạn nơi quét được chọn thay vì tìm kiếm. Và như vậy.
Không dựa vào kết quả để được sắp xếp trừ khi bạn đã nói "Máy chủ, ORDER BY
".