Sprawdź, co robią Twoje indeksy – sys.dm_db_index_usage_stats

Bieganie, sport, który stał się bardzo popularny, nie ma, co się dziwić. Dostarcza sporą dawkę endorfin. Dzięki temu paradoksalnie mimo zmęczenia czujemy się pełni energii. To uczucie wielu ludzi nakręcą, biegają i  częściej. Takie podejście może powodować pewne kłopoty bo więcej nie znaczy lepiej.

Pewnie czytasz i się zastanawiasz, co ma bieganie do baz danych? Bo raczej nie o bieganiu wpisu się spodziewasz. Odpowiadam, z bazami jest trochę jak z bieganiem. Przesadzając z ilością treningów możemy doprowadzić do gorszych rezultatów i samopoczucia, przesadzając z indeksami możemy doprowadzić do spadku wydajności. Żeby móc to jednak stwierdzić, niezbędne są dane, które trzeba zbierać i analizować.

czytaj dalej

Indeksy pokrywające

Na temat indeksów pokrywających napisano już wiele ale niekiedy warto zrobić sobie małą powtórkę wiedzy.

Tak więc, indeks pokrywając to nic innego jak pokrycie zapytania indeksem który zawiera wszystkie kolumny (w tym część tylko dołączona) z żądania. Przy takim podejściu unikamy operacji wyszukiwania w indeksie klastrowym bądź stercie. Jest to duża zaleta ale nie główna.

Taka metoda dostępu do danych jest efektywna przede wszystkim z względu na mniejszy rozmiar wiersza. Zakładając, że w indeksie klastrowym na jednej stronie jesteśmy wstanie upakować 80 wierszy (w uproszczonym ujęciu zakładając, że jeden wiersz to 100bajtów = 0,1kb * 80 = 8kb), to przy indeksie pokrywającym np. przy połowie mniejszej ilości kolumn otrzymamy 160 wierszy. Teoretyczne zapytanie pobierające 10000 wierszy musi przeskanować o połowę mniejszą ilość stron na poziomie liści indeksu nieklastrowego.

czytaj dalej

[PowerShell + SQL] Masowy zrzut T-SQL dla indeksów

W trakcie optymalizacji baz danych pod kątem indeksów należałoby się pozbyć nieużywanych,  kosztowych bądź zduplikowanych indeksów (postaram się o tym napisać więcej w kolejnym wpisie) Przy tego typu zmianach niezbędne jest pozostawienie sobie możliwości wycofania zmian, ja to wykonuję poprzez zrzut skryptu T-SQL dla indeksu.

Przy większej ilości indeksów nie chciałbym robić tego pojedynczo, dlatego posługuję się skryptem których chciałbym się podzieli.

czytaj dalej