Podczas wykonywania operacji wstawiania aktualizacji i usuwania indeksy zostaną pofragmentowane zarówno wewnętrznie, jak i zewnętrznie.
Fragmentacja wewnętrzna polega na tym, że masz wysoki procent wolnego miejsca na stronach indeksu, co oznacza, że SQL Server musi czytać więcej stron podczas skanowania indeksu.
Fragmentacja zewnętrzna występuje wtedy, gdy strony indeksu nie są już uporządkowane, więc SQL Server musi wykonać więcej pracy, szczególnie w zakresie operacji wejścia / wyjścia, aby odczytać indeks.
Jeśli indeksy staną się zbyt rozdrobnione, w najlepszym razie zapytania będą mniej wydajne, ale w najgorszym przypadku SQL Server po prostu przestanie używać indeksów razem, co oznacza, że praktycznie wszystkie zapytania będą musiały wykonać skanowanie tabeli lub skanowanie indeksu klastrowego. To bardzo zaszkodzi twojej wydajności!
Podczas reorganizacji indeksu program SQL Server korzysta z istniejących stron indeksu i po prostu przetasowuje dane w tym wieku. Zmniejszy to fragmentację wewnętrzną, a także może usunąć niewielką fragmentację zewnętrzną. Jest to operacja lżejsza niż przebudowa i jest zawsze dostępna online.
Podczas odbudowywania indeksu SQL Server faktycznie korzysta z danych indeksu i korzysta z nowego zestawu stron indeksu. To oczywiście złagodzi zarówno fragmentację wewnętrzną, jak i zewnętrzną, ale jest to operacja o większej wadze i domyślnie powoduje, że indeks przechodzi w tryb offline, chociaż może być wykonywany jako operacja online, w zależności od wersji i ustawień SQL Server.
Jednak nie należy oczekiwać fragmentacji 0 po przebudowie. O ile nie użyjesz podpowiedzi do zapytania MAXDOP, SQL Server zrównolegla operację przebudowy i im więcej procesorów będzie zaangażowanych, tym bardziej prawdopodobne jest rozdrobnienie, ponieważ każdy procesor lub rdzeń odbuduje swoją sekcję lub fragment indeksu indywidualnie, bez względu na wzajemnie. Jest to kompromis między najlepszymi poziomami fragmentacji a czasem potrzebnym na odbudowanie indeksu. Aby uzyskać fragmentację prawie 0, użyj MAXDOP 1 i posortuj wyniki w TempDB.