- Ogólne wskazówki dotyczące projektowania indeksów w Microsoft SQL Server
- Indeksowanie wytycznych projektowych dla optymalizacji zapytań
Jak wiadomo, indeksy są używane do optymalizacji zapytań w bazie danych, ale aby korzystać z tych indeksów tak efektywnie, jak to możliwe, muszą być odpowiednio zaprojektowane, więc dziś przyjrzymy się ogólnym zaleceniom dotyczącym projektowania indeksów w DBMS Microsoft SQL Server , które pomogą znacząco poprawić wydajność zapytań SQL i ogólnie zastosowania.
Wcześniej w artykule „ Podstawy indeksów w Microsoft SQL Server »Dowiedzieliśmy się, jakie są indeksy i czym są, a teraz nauczymy się, jak poprawnie zaprojektować te indeksy, aby osiągnąć maksymalną wydajność zapytań SQL.
Ogólne wskazówki dotyczące projektowania indeksów w Microsoft SQL Server
- Jednym z najbardziej wydajnych indeksów jest indeks dla kolumn całkowitych, które mają unikalne wartości, więc jeśli to możliwe, utwórz indeksy dla takich kolumn;
- Jeśli tabela jest bardzo intensywnie aktualizowana, nie zaleca się tworzenia dużej liczby indeksów, ponieważ zmniejsza to wydajność instrukcji INSERT, UPDATE, DELETE i MERGE. Ponieważ po zmianach danych w tabeli SQL serwer automatycznie dokonuje odpowiednich zmian we wszystkich indeksach;
- Jeśli tabela z dużą ilością danych jest rzadko aktualizowana, jest aktywnie używana w Instrukcje SELECT tj. próbkowanie danych, duża liczba indeksów może poprawić wydajność, ponieważ optymalizator zapytań będzie miał większy wybór indeksów podczas określania najbardziej wydajnego i szybkiego sposobu dostępu do danych;
- Jeśli utworzysz indeks nieklastrowany w grupie plików, która nie znajduje się na dysku, na którym znajdują się grupy plików tabeli, może to poprawić wydajność dużych tabel i indeksów, ponieważ umożliwia jednoczesny dostęp do wielu dysków;
- W przypadku tabel z małą ilością danych tworzenie indeksów, w szczególności indeksów nieklastrowanych w celu poprawy wydajności, może być całkowicie bezużyteczne, a nawet koszt ich utrzymania. Ponieważ optymalizator może potrzebować więcej czasu, aby wyszukać dane w indeksie, niż patrzeć na dane w samej tabeli. Dlatego nie twórz indeksów dla tabel z bardzo małymi danymi;
- Indeks klastrowany musi być utworzony dla kolumny, która jest unikalna i nie akceptuje wartości NULL, również długość klucza musi być mała, innymi słowy klucz indeksowy nie musi składać się z kilku kolumn;
- Jeśli widok zawiera agregaty i łączenia tabel, indeksy dla takich widoków mogą zapewnić dobrą poprawę wydajności.
Indeksowanie wytycznych projektowych dla optymalizacji zapytań
- Indeksy nieklastrowane muszą być tworzone dla wszystkich kolumn, które są często używane w warunkach (WHERE) i w złączeniach (JOIN);
- Jeśli to możliwe, nie twórz indeksów, w których znajduje się wiele kluczowych kolumn, ponieważ wpływa to na rozmiar indeksu i zasoby do jego utrzymania;
- Efektywnie wykorzystuj indeksy obejmujące, tj. indeksy, które zawierają wszystkie kolumny używane w zapytaniu ( nazywane jest to „zapytaniem o pokrycie” ). Z tego powodu optymalizator zapytań może znaleźć wszystkie wartości kolumn w indeksie bez sprawdzania danych tabeli, co skutkuje mniejszą ilością dysków we / wy. Można to osiągnąć, włączając do indeksu kolumny niebędące kluczami ( dołączone kolumny ), ale należy również wziąć pod uwagę, że pociąga to za sobą wzrost rozmiaru indeksu;
- Jeśli to możliwe, zaleca się zastąpienie nieunikalnego indeksu unikalnym indeksem dla tej samej kombinacji kolumn, co zapewnia optymalizatorowi zapytań dodatkowe informacje, które mogą zwiększyć wydajność indeksu;
- Podczas tworzenia indeksu rozważ kolejność kolumn klucza, co poprawia wydajność indeksu. Na przykład kolumny używane w klauzuli WHERE w warunkach wyszukiwania (=), większe niż (>), mniejsze niż (<) lub w przedziale (BETWEEN) lub uczestniczące w złączeniu (JOIN) powinny być pierwsze. Jeśli jest ich kilka, uporządkuj je według poziomu różnicy, tj. od najczystszej do najmniej wyraźnej;
- Spróbuj zastosować filtrowane indeksy dla kolumn, które mają precyzyjnie zdefiniowane podzbiory, ponieważ w niektórych przypadkach takie indeksy mogą zwiększyć szybkość wykonywania zapytań w porównaniu ze zwykłymi indeksami ( pełną tabelą );
- Zaleca się również projektowanie żądań zmiany danych, tak aby wstawiały lub modyfikowały jak najwięcej linii za pomocą jednej instrukcji, tj. Nie używaj wielu zapytań do tych samych operacji.
Polecam początkującym programistom przeczytanie mojej książki ” Ścieżka programisty T-SQL »Bardziej szczegółowe badanie języka T-SQL.
Mam wszystko, mam nadzieję, że materiał był użyteczny i interesujący dla ciebie, pa!
Podoba Ci się ten artykuł? Udostępnij znajomym:
Podoba Ci się ten artykuł?