Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Indeksy wielokrotne a indeksy wielokolumnowe

Zgadzam się z Cade Roux.

Ten artykuł powinien skierować Cię na właściwą drogę:

  • Indeksy w SQL Server 2005/2008 — najlepsze praktyki, część 1
  • Indeksy w SQL Server 2005/2008 – Część 2 – Wewnętrzne

Należy zauważyć, że indeksy klastrowe powinny mieć unikalny klucz (polecam kolumnę tożsamości) jako pierwszą kolumnę. Zasadniczo pomaga to wstawić dane na końcu indeksu i nie powoduje wielu operacji we/wy dysku i podziałów stron.

Po drugie, jeśli tworzysz inne indeksy na swoich danych i są one sprytnie skonstruowane, zostaną ponownie użyte.

np. wyobraź sobie, że przeszukujesz tabelę w trzech kolumnach

stan, powiat, kod pocztowy.

  • czasami wyszukujesz tylko według stanu.
  • czasami wyszukujesz według stanu i hrabstwa.
  • często wyszukujesz według stanu, hrabstwa, kodu pocztowego.

Następnie indeks ze stanem, hrabstwem, kodem pocztowym. zostaną użyte we wszystkich trzech z tych wyszukiwań.

Jeśli będziesz często wyszukiwać według samego zip, powyższy indeks nie będzie używany (w każdym razie przez SQL Server), ponieważ zip jest trzecią częścią tego indeksu, a optymalizator zapytań nie uzna tego indeksu za pomocny.

Następnie możesz utworzyć indeks na samym Zip, który byłby używany w tym przypadku.

Przy okazji możemy skorzystaćz faktu,że przy indeksowaniu wielokolumnowym pierwsza kolumna indeksu jest zawsze użyteczna do wyszukiwania, a przy wyszukiwaniu tylko według „stanu” jest wydajna, ale nie tak wydajna jak indeks jednokolumnowy w „stanie” '

Wydaje mi się, że odpowiedź, której szukasz, jest taka, że ​​zależy to od twoich klauzul gdzie często używanych zapytań, a także od twojej grupy według.

Artykuł bardzo pomoże. :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd R DBI ODBC:nanodbc/nanodbc.cpp:3110:07009:[Microsoft][Sterownik ODBC 13 dla programu SQL Server]Nieprawidłowy indeks deskryptora

  2. Uzyskiwanie uprawnień do wykonywania xp_cmdshell

  3. Co to jest ciąg formatujący w programie SQL Server?

  4. SQL Server Standard Edition High Availability Futures

  5. Dlaczego narzędzia do monitorowania baz danych w chmurze dla SQL Server są cenne