Zgadzam się z Cade Roux .
Ten artykuł powinien doprowadzić Cię na właściwą drogę:
Należy zauważyć, że indeksy klastrowe powinny mieć unikalny klucz (kolumnę tożsamości polecam) jako pierwszą kolumnę. Zasadniczo pomaga wstawiać dane na końcu indeksu i nie powoduje wielu dyskowych operacji we / wy i podziału strony.
Po drugie, jeśli tworzysz inne indeksy na swoich danych, które są sprytnie skonstruowane, zostaną ponownie wykorzystane.
np. wyobraź sobie, że przeszukujesz tabelę w trzech kolumnach
stan, hrabstwo, zip.
- czasami wyszukujesz tylko według stanu.
- czasami wyszukujesz według stanu i hrabstwa.
- często wyszukujesz według stanu, hrabstwa, zip.
Następnie indeks ze stanem, hrabstwem, zip. będą używane we wszystkich tych trzech wyszukiwaniach.
Jeśli dość często przeszukujesz sam zip, powyższy indeks nie zostanie użyty (w każdym razie 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 samego Zip, który byłby używany w tym przypadku.
Nawiasem mówiąc, możemy skorzystać z faktu, że przy indeksowaniu wielokolumnowym pierwsza kolumna indeksu jest zawsze przydatna do wyszukiwania, a gdy wyszukujesz tylko według „stanu”, jest to wydajne, ale nie tak skuteczne jak indeks jednokolumnowy dla „stanu” „
Wydaje mi się, że odpowiedź, której szukasz, polega na tym, że zależy to od tego, gdzie znajdują się klauzule często używanych zapytań, a także od twojej grupy.
Artykuł bardzo pomoże. :-)