Marcin Adamowicz

Marcin Adamowicz Programista, T3 s.c.

Temat: pytanie o indeksy

Witam

Mam sobie sporą bazę danych do której dostęp odbywa się głównie przez procedury.
Na raporcie użycia indeksów wyszło mi że pewien prosty index jest wykorzystywany bardzo często.
Częściej niż indeks złożony który powinien obsługiwać 90% zapytań.

Czy jest jakiś sposób aby dowiedzieć się które procedury zapytania używają danego indeksu?

Jest tego bardzo dużo i analiza wszystkich po kolei explainem to kilka dni roboty.

Marcin

konto usunięte

Temat: pytanie o indeksy

o ile dobrze pamiętam

planner zapytania sam wybiera najoptymalnieszy index

w SQL server są fajne narzędzia do analizy i autopropozycje jakie indexy porobić

chyba będziesz musiał napisać coś więcej o swoim problemie

może przedstawić wycinek struktury, przykładowe zapytanie i 2 indexy o których wspomniasz
Marcin Adamowicz

Marcin Adamowicz Programista, T3 s.c.

Temat: pytanie o indeksy

Mam tabele która ma indeks założony jeden na pole nvarchar drugi na int i ten nvarchar
w 90 % przypadków interesują mnie pola o określonym parametrze int.

Jednak MS SQL wybiera sobie ten prostszy pewnie to wynika z niewłaściwej kolejności warunków lub pominięcia tego warunku w jakimś zapytaniach/podzapytaniach.

Ja tam do końca nie wieże w to że on sobie zawsze optymalnie wybierze plan zapytania na przykład na podstawie kilku zapytań zawierających pewne parametry w procedurze stwierdzi że lepiej mu wybrać tak jednak dla specyficznych parametrów lepiej jest inaczej to zrobić w kilku miejscach już to wyłapałem. Robił sobie na 100 procedur 80 w 20 ms pozostałe 20 robił w około 1000 ms po wymuszeniu użycia odpowiedniego indeksu robi mniejsze w 22 ms większe w 200 ms.
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Marcin Adamowicz

Marcin Adamowicz Programista, T3 s.c.

Temat: pytanie o indeksy

Bartosz Ratajczyk:
http://stackoverflow.com/questions/2247713/how-to-find...

Super o to chodziło dzięki wielkie
Kamil N.

Kamil N. Expert of Microsoft
SQL Server, Business
Intelligence & D...

Temat: pytanie o indeksy

Dopisz tylko z przodu:
SELECT s.database_id, DB_NAME(s.database_id),
i ewentualnie zawężaj dodatkowo po bazie danych,
ponieważ przytoczony raport zawiera statystyki wszystkich baz odpytywanej instancji.
Marcin Adamowicz

Marcin Adamowicz Programista, T3 s.c.

Temat: pytanie o indeksy

Kamil Nowiński:
Dopisz tylko z przodu:
SELECT s.database_id, DB_NAME(s.database_id),
i ewentualnie zawężaj dodatkowo po bazie danych,
ponieważ przytoczony raport zawiera statystyki wszystkich baz odpytywanej instancji.

z tym to już sobie poradziłem filtrowałem po tabelach i analizowałem
parę milisekund do przodu.
Grzegorz Stolecki

Grzegorz Stolecki konsultant Business
Intelligence, SQL
Server, MVP

Temat: pytanie o indeksy

Wymuszenie indeksu to dopiero początek.
Sprawdź jakie operacje są wykonywane na indeksie (physical operations).
Sprawdź statystki - jeśli są nieaktualne, wybierany może być zły indeks.
Sprawdź plany buforowane w cache - może powinieneś stosować RECOMPILE?

pozdrawiam

Następna dyskusja:

pytanie: reporting services...




Wyślij zaproszenie do