General Index Design Guidelines

Administratorzy doświadczonych bazy danych można projektować zbiór dobre indeksy, ale to zadanie jest bardzo skomplikowane, czasochłonne i błąd podatna nawet w przypadku złożonych umiarkowanie baz danych i obciążenia pracą.Opis właściwości kolumn bazy danych, kwerendy i dane może pomóc projektowania optymalne indeksów.

Uwagi dotyczące bazy danych

Podczas projektowania indeksu, należy wziąć pod uwagę następujące wskazówki bazy danych:

  • Dużej liczby indeksów w tabela mają wpływ na wydajność, INSERT, UPDATE, DELETE, a MERGE instrukcji, ponieważ wszystkie indeksy muszą być odpowiednio dostosowane jako dane w tabela zmiany.

    • Należy unikać over-indexing silnie zaktualizowane tabel i zachować indeksów wąskie, oznacza to, w jak najmniejszej liczbie kolumn jak to możliwe.

    • Wiele indeksów można użyć, aby poprawić wydajność kwerendy o tabele z aktualizacji niskie wymagania, ale dużych ilości danych.Dużej liczby indeksów może pomóc wykonywanie kwerendy, które nie należy modyfikować dane, takie jak instrukcji SELECT, ponieważ optymalizator kwerendy ma więcej indeksy, aby użyć w celu ustalenia metoda najszybszy dostęp.

  • Indeksowanie małych tabel może nie być optymalne, ponieważ może potrwać dłużej optymalizator kwerendy na przechodzenie przez indeks, wyszukiwanie danych niż Aby wykonać skanowanie prostej tabela.Dlatego indeksy tabel małych nigdy nie może być używany, ale nadal muszą być utrzymywane jako dane w tabela zmiany.

  • Indeksy w widokach umożliwiają zwiększenie wydajności znaczące Kiedy widok zawiera agregacji, sprzężenia tabela lub kombinacja agregacji i sprzężenia.W widoku nie musi jawnie odwoływać się w kwerendzie dla optymalizator kwerendy z niego korzystać.Aby uzyskać więcej informacji zobaczWidoki indeksowane projektowania.

  • Za pomocą klasyfikatora strojenia bazy danych aparat bazy danych analizy i zaleceń indeksu.Aby uzyskać więcej informacji zobaczUnderstanding Database Engine Tuning Advisor.

Uwagi dotyczące kwerendy

Podczas projektowania indeksu, należy wziąć pod uwagę następujące wskazówki kwerendy:

  • Utwórz ponownego zbudowania indeksów nie klastrowanych na wszystkich kolumn, które są często stosowane w predykatów i dołączenia warunków w kwerendach.

    Important noteImportant Note:

    Należy unikać dodawania zbędne kolumny.Dodawanie zbyt wiele kolumn indeksu może niekorzystnie wpłynąć na wydajność dysku miejsce i indeks konserwacji.

  • Indeksy obejmujące może poprawić wydajność kwerendy, ponieważ wszystkie dane niezbędne do spełnienia wymogów kwerendy istnieje w obrębie samego indeksu.Oznacza to tylko strony indeksu, a nie strony danych, tabela lub indeks klastrowany jest wymagany do pobrania żądanych danych, dlatego zmniejszenie ogólnej dysku We/Wy.For example, a query of columns a and b on a tabela that has a indeks złożony created on columns a, b, and c can retrieve the specified data from the index alone.

  • Napisz kwerendy, które można wstawić lub zmodyfikować tyle wierszy, jak to możliwe w pojedynczej instrukcja, zamiast wielu kwerend do aktualizowania wierszy tego samego.Przy użyciu pojedynczej instrukcja, może zostać wykorzystana, zoptymalizowanym indeksem konserwacji.

  • Należy ocenić typ kwerendy i używania kolumn w kwerendzie.Na przykład kolumna używane w wpisz dokładny odpowiednik kwerendy może być odpowiednie do pełnienia funkcji indeks klastrowany lub nieklastrowany.Aby uzyskać więcej informacji zobaczTypy kwerendy i indeksów.

Uwagi dotyczące kolumna

Podczas projektowania indeks wziąć pod uwagę następujące wskazówki kolumna:

  • Zachowaj długość indeks klucz skrót indeksów klastrowanych.Ponadto stosowanie indeksów klastrowanych korzystają z tworzony na podstawie unikatowego lub niepustych kolumn.Aby uzyskać więcej informacji zobaczWskazówki dotyczące projektu indeks klastrowany.

  • Kolumny, których ntext, text, image, varchar(max), nvarchar(max), a varbinary(max) Nie można określić typy danych w kolumnach kluczy indeksu. Jednak varchar(max), nvarchar(max), varbinary(max), a xml typy danych mogą uczestniczyć w indeks nieklastrowany jako nonkey indeksu kolumny. Aby uzyskać więcej informacji zobaczIndex with Included Columns.

  • An xml data type can only be a klucz kolumna only in an XML index. Aby uzyskać więcej informacji zobaczIndeksy w kolumnach typu danych XML.

  • Sprawdź unikatowość kolumna.Indeks unikatowy, zamiast nieunikatowy indeks w tej samej kombinacji kolumn znajdują się dodatkowe informacje o optymalizator kwerendy, który sprawia, że indeks jest bardziej użyteczne.Aby uzyskać więcej informacji zobaczUnique Index Design Guidelines.

  • Sprawdź dystrybucji danych kolumna.Często jest spowodowana długo działającą kwerendę, indeksując kolumna z kilku wartości unikatowych lub wykonując łączyć w takiej kolumna.Problem z podstawowych danych i kwerendy i zazwyczaj nie można rozpoznać bez określenia tej sytuacji.Na przykład w katalogu fizycznego telefonu sortowane w porządku alfabetycznym według nazwisk lokalizowanie osobę, jeśli Kowalski lub Jones noszą nazwy wszystkich osób w mieście nie będzie przyspieszenia.Aby uzyskać więcej informacji na temat danych dystrybucji zobacz Using Statistics to Improve Query Performance.

  • Należy rozważyć użycie indeksów filtrowane na kolumny zawierające podzestawy dobrze określone, na przykład rozrzedzone kolumn, kolumny z przeważnie wartości NULL, kolumny z kategoriami wartości i kolumny do różnych zakresów wartości.Dobrze indeksu filtrowanego można poprawić wydajność kwerendy, zmniejszyć koszty obsługi indeksu i obniżenie kosztów magazynowania.Aby uzyskać więcej informacji zobaczWskazówki dotyczące projektowania indeks filtrowane.

  • Jeśli indeks będzie zawierać wiele kolumn, należy wziąć pod uwagę kolejność kolumn.kolumna, która jest używana w klauzula WHERE w o równą (=), większe niż)>), mniejsze niż ()<), lub BETWEEN wyszukiwania warunku, lub uczestniczy w sprzężeniu, należy najpierw umieścić. Dodatkowe kolumny powinny być uporządkowane na podstawie ich poziom oszacowania odrębności, oznacza to, z różnych najbardziej do najmniej różne.

    Na przykład, jeśli indeks jest zdefiniowany jako LastName, FirstName indeks będzie przydatne, gdy jest to kryterium wyszukiwania WHERE LastName = 'Smith' lub WHERE LastName = Smith AND FirstName LIKE 'J%'. Jednak optymalizator kwerendy nie może używać indeksu dla kwerendy, która przeszukiwane tylko na FirstName (WHERE FirstName = 'Jane').

  • Należy rozważyć indeksowanie kolumny obliczane.Aby uzyskać więcej informacji zobaczTworzenie indeksów na kolumny obliczane.

Właściwości indeksu

Po ustaleniu, że indeks jest odpowiednia dla kwerendy, można wybrać typ indeksu, który najlepiej pasuje do danej sytuacji.Następujące właściwości indeksu:

  • Klastrowany lub nieklastrowany

  • Unikatowy lub nieunikatowy

  • Pojedyncza kolumna lub multicolumn

  • Rosnący lub malejący porządek kolumn w indeksie

  • Tabela pełnego i filtrowane ponownego zbudowania indeksów nie klastrowanych

Można także dostosować właściwości magazynu początkowego indeksu, aby zoptymalizować swoją wydajność lub konserwacji ustawiając jedną z opcji, takich jak FILLFACTOR.Aby uzyskać więcej informacji zobaczSetting Index Options.Ponadto można określić lokalizacja przechowywania indeksu za pomocą schematów filegroups lub partycji w celu optymalizacji wydajności.Aby uzyskać więcej informacji zobaczPlacing Indexes on Filegroups.