Dane są fizycznie przechowywane w indeksie klastrowym, który jest zwykle kluczem podstawowym, ale nie musi nim być.
Nie ma gwarancji, że dane w SQL będą miały porządek bez klauzuli ORDER BY. Zawsze powinieneś podać klauzulę ORDER BY, gdy chcesz, aby dane były w określonej kolejności. Jeśli tabela jest już posortowana w ten sposób, optymalizator nie wykona żadnej dodatkowej pracy, więc nie zaszkodzi jej tam mieć.
Bez klauzuli ORDER BY system RDBMS może zwracać strony z pamięci podręcznej pasujące do zapytania podczas oczekiwania na wczytanie rekordów z dysku. W takim przypadku, nawet jeśli w tabeli znajduje się indeks, dane mogą nie zostać wprowadzone w kolejności indeksu. (Zauważ, że to tylko przykład — nie wiem, ani nawet nie sądzę, że zrobi to rzeczywisty RDBMS, ale jest to akceptowalne zachowanie dla implementacji SQL.)
EDYTUJ
Jeśli masz wpływ na wydajność podczas sortowania w porównaniu z brakiem sortowania, prawdopodobnie sortujesz według kolumny (lub zestawu kolumn), która nie ma indeksu (klastrowanego lub innego). Biorąc pod uwagę, że jest to szereg czasowy, możesz sortować według czasu, ale indeks klastrowy znajduje się na podstawowym bigint. SQL Server nie wie, że oba te wzrosty rosną w ten sam sposób, więc musi wszystko wykorzystać.
Jeśli kolumna czasu i kolumna klucza podstawowego są powiązane według kolejności (jedna wzrasta wtedy i tylko wtedy, gdy druga wzrasta lub pozostaje taka sama), zamiast tego sortuj według klucza podstawowego. Jeśli nie są one powiązane w ten sposób, przenieś indeks klastrowy z klucza podstawowego do dowolnej kolumny, według której sortujesz.