Na serwerze Sql mam tabelę z kluczem podstawowym Identity. Często chcę mieć kilka najnowszych rekordów, więc wybieram Top n posortowany po malejącym kluczu podstawowym. Czy powinienem zdefiniować indeks klucza podstawowego jako malejący, czy nie robi to różnicy? tzn. czy są one w porządku rosnącym, to czy sql równie skutecznie działa wstecz?Klawisz podstawowy Rosnąco vs malejąco
Odpowiedz
Z czysto zapytaniem punktu widzenia nie ma różnicy, czy klucz jest malejącej lub rosnącej jeśli chcesz ciągnąć N najnowsza lub N najstarsze rekordy:
wewnętrzne algorytmy SQL Server może nawigacja równie wydajnie w obu kierunkach na indeksie jednokolumnowym, bez względu na kolejność zapisywania kluczy. Na przykład określenie DESC w indeksie z jedną kolumną nie tworzy zapytań z klauzulą ORDER BY IndexKeyCol klauzula DESC działa szybciej, niż gdyby dla indeksu określono ASC.
http://msdn.microsoft.com/en-us/library/aa933132(SQL.80).aspx
Jednak pod niemal każdym normalnym okolicznościach chcesz podstawowy klucz do rosnąco i ordinally sekwencyjny, aby zapobiec rozdrobnieniu. SQL Server jest zoptymalizowany do fizycznego dodawania nowych rekordów na końcu pliku bazy danych. Jeśli trzeba wstawić każdy nowy rekord u góry i spychać wszystko w dół, prawdopodobnie spowoduje to prawie 100% fragmentację.
Nie ma absolutnie żadnej różnicy.
Nie mogę sobie nawet wyobrazić, dlaczego można to zadeklarować w dowolny sposób.
Z pojedynczym indeksem kolumny, nie robi różnicy, ale ASC i DESC wchodzą w grę gdy masz wiele kolumn w indeksie, a kolejność ma znaczenie dla drugiej/trzeciej/czwartej kolumny/etc. –
To nie ma dla mnie sensu. Jeśli masz dwie wartości pól, sposób w jaki schodzisz z drzewa jest zupełnie obojętny. Czy to tylko domysły, czy masz referencje? – dkretz
Ma sens dla mnie. Jeśli masz indeks o nazwie "A ASC, B DESC", ale większość twoich zapytań to "ORDER BY A ASC, B ASC", którego nie unikniesz sortowania. –
- 1. R: jak sprawdzić, czy wektor jest rosnąco/malejąco
- 2. rosnąco/malejąco w LINQ - czy można zmienić zamówienie za pomocą parametru?
- 3. Klucz podstawowy klastrowany vs nieklastrowany
- 4. takeOrdered malejąco Pyspark
- 5. Sortowanie hash przez wartości w kolejności, a następnie klawisz malejąco w kolejności rosnącej rubin
- 6. lodash multi-kolumna SortBy malejąco
- 7. Kombinacje klawiszy Python (klawisz Ctrl + Shift + klawisz)
- 8. Jak domyślnie sortować malejąco domyślnie jQuery Tablesorter?
- 9. Lista sortowania <DateTime> Malejąco
- 10. Jak dynamicznie dodawać malejąco do orderby?
- 11. Wyświetl tabele korelacji jako lista malejąco
- 12. JQ Sortuj malejąco według wielu kluczy
- 13. Jak ngInfiniteScroll pobierać dane przez createdAt malejąco
- 14. NSIS Vs WiX Vs anyother Instalacja pakietu
- 15. iOS - Klucz podstawowy zestawu danych atrybut klucz
- 16. Naciśnij klawisz z Java
- 17. CGEventPost - przytrzymaj klawisz (przesunięcie)
- 18. Zakończenie kodu IntelliJ: klawisz ⇥?
- 19. RichTextBox i klawisz tabulatora
- 20. klawisz funkcyjny naciśnięcie klawisza
- 21. Konwertuj kolor Podstawowy na kolorowy Podstawowy (o ile ciemniejszy)
- 22. Podstawowy klucz kontra kluczowego
- 23. Podstawowy klucz złożony PostgreSQL
- 24. Klucz podstawowy wielokolumnowy MySQL
- 25. klucz podstawowy naruszenia ograniczenia
- 26. MERGE Naruszenie klucz podstawowy
- 27. Uzyskaj adres podstawowy procesu
- 28. JPA kompozytowa klucz podstawowy
- 29. iOS zarządzanie pamięcią podstawowy
- 30. apache globalny podstawowy auth
Nie powinieneś ** nie ** tworzyć go jako 'desc'. Otrzymasz wiele logicznej fragmentacji z insertów [jak pokazano tutaj] (http://stackoverflow.com/a/9382500/73226) –