2011-04-11 21 views
11

Po wykonaniu kwerendy takiej jak SELECT col1, col2, col3 FROM table, zostanie ona posortowana według klucza podstawowego w kolejności rosnącej.Czy istnieje "Domyślna kolejność według kolumn" w SQL Server?

Zastanawiam się, czy istnieje sposób na określenie innej kolumny, np. ORDER BY CreatedDate DESC, jeśli nie ma klauzuli "Z porządku"?

Wątpię (ponieważ byłoby to bardzo nieintuicyjne, ale po prostu zastanawiasz się, w każdym razie.

Odpowiedz

24

nr Wszelkie zamawiania widać jest artefaktem strategii optymalizator kwerendy w. teoria relacyjny zabrania że istnieje niejawna zamawianie dowolnego zestawu danych.

nie można nawet liczyć na to samo zamówienie następnym razem dla tego samego zapytania, ponieważ strategia optymalizatora zależy od kontekstu i d ata, które mogą ulec zmianie.

+3

Interesująca, relacyjna teoria faktycznie określa, że ​​'zestaw jest nieuporządkowaną kolekcją unikatowych, nie powielonych pozycji'. –

12

Nawet zachowanie widzisz (zamawiane przez PK) nie jest gwarantowana przez standard. Zawsze należy określić kolejność chcesz rzeczy, które mają być pobierane.

+3

Ale tylko wtedy, gdy jest to ważne, co może nie być prawdą. – dkretz

+0

@le dorfier - to prawda, jeśli nie zależy Ci na zamówieniu, nie ma powodu, aby używać klauzuli ORDER BY. –

Powiązane problemy