Dữ liệu được lưu trữ vật lý bằng chỉ mục nhóm, thường là khóa chính nhưng không nhất thiết phải như vậy.
Dữ liệu trong SQL không được đảm bảo có thứ tự mà không có mệnh đề ORDER BY. Bạn phải luôn chỉ định mệnh đề ORDER BY khi bạn cần dữ liệu theo một thứ tự cụ thể. Nếu bảng đã được sắp xếp theo cách đó, trình tối ưu hóa sẽ không thực hiện thêm bất kỳ công việc nào, vì vậy không có hại gì khi có nó ở đó.
Nếu không có mệnh đề ORDER BY, RDBMS có thể trả về các trang được lưu trong bộ nhớ cache phù hợp với truy vấn của bạn trong khi chờ các bản ghi được đọc từ đĩa. Trong trường hợp đó, ngay cả khi có một chỉ mục trên bảng, dữ liệu có thể không theo thứ tự của chỉ mục. (Lưu ý rằng đây chỉ là một ví dụ - tôi không biết hoặc thậm chí nghĩ rằng một RDBMS trong thế giới thực sẽ làm điều này, nhưng đó là hành vi có thể chấp nhận được đối với việc triển khai SQL.)
CHỈNH SỬA
Nếu bạn có tác động đến hiệu suất khi sắp xếp so với khi không sắp xếp, có thể bạn đang sắp xếp trên một cột (hoặc tập hợp các cột) không có chỉ mục (được phân nhóm hoặc theo cách khác). Cho rằng đó là một chuỗi thời gian, bạn có thể sắp xếp dựa trên thời gian, nhưng chỉ mục được nhóm lại nằm trên bigint chính. SQL Server không biết rằng cả hai đều tăng theo cùng một cách, vì vậy nó phải sử dụng mọi thứ.
Nếu cột thời gian và cột khóa chính có liên quan theo thứ tự (một cột tăng nếu và chỉ khi cột kia tăng hoặc giữ nguyên), hãy sắp xếp theo khóa chính thay thế. Nếu chúng không liên quan theo cách này, hãy di chuyển chỉ mục được nhóm từ khóa chính sang bất kỳ (các) cột nào bạn đang sắp xếp.