Bạn không thể tin vào thứ tự các hàng trong bất kỳ truy vấn nào không có ORDER BY
rõ ràng mệnh đề. Nếu bạn truy vấn chế độ xem có thứ tự, nhưng bạn không bao gồm ORDER BY
, hãy ngạc nhiên một cách thú vị nếu chúng đúng thứ tự và đừng mong điều đó xảy ra lần nữa.
Đó là bởi vì trình tối ưu hóa truy vấn miễn phí truy cập các hàng theo những cách khác nhau tùy thuộc vào truy vấn, thống kê bảng, số lượng hàng, chỉ mục, v.v. Nếu nó biết truy vấn của bạn không có ORDER BY
mệnh đề này, có thể bỏ qua thứ tự hàng để (ho) trả về các hàng nhanh hơn.
Hơi lạc đề. . .
Thứ tự sắp xếp không nhất thiết phải giống nhau giữa các nền tảng ngay cả đối với các ảnh ghép nổi tiếng. Tôi hiểu rằng việc sắp xếp UTF-8 trên Mac OS X đặc biệt kỳ lạ. (Các nhà phát triển PostgreSQL gọi nó là hỏng .) PostgreSQL dựa trên strcoll (), mà tôi hiểu dựa trên ngôn ngữ hệ điều hành.
Tôi không rõ PostgreSQL 9.1 sẽ xử lý điều này như thế nào. Trong 9.1, bạn có thể có nhiều chỉ mục, mỗi chỉ mục có một đối chiếu khác nhau . ORDER BY không chỉ định đối chiếu thường sẽ sử dụng đối chiếu các cột của bảng cơ sở bên dưới, nhưng trình tối ưu hóa sẽ làm gì với chỉ mục chỉ định một đối chiếu khác với một cột không được lập chỉ mục trong bảng cơ sở?