Udostępnij za pomocą


sys.dm_db_missing_index_group_stats (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca podsumowujące informacje o grupach brakujących indeksów, z wyłączeniem indeksów przestrzennych.

W usłudze Azure SQL Database dynamiczne widoki zarządzania nie mogą ujawniać informacji, które mają wpływ na zawieranie bazy danych lub uwidacznianie informacji o innych bazach danych, do których użytkownik ma dostęp. Aby uniknąć ujawniania tych informacji, każdy wiersz zawierający dane, które nie należą do połączonej dzierżawy, jest filtrowany.

Nazwa kolumny Typ danych Description
group_handle int Identyfikuje grupę brakujących indeksów. Ten identyfikator jest unikalny na całym serwerze.

Pozostałe kolumny dostarczają informacji o wszystkich zapytaniach, dla których indeks w grupie jest uznawany za brakujący.

Grupa indeksów zawiera tylko jeden indeks.

Można do niego dołączyć index_group_handle w sys.dm_db_missing_index_groups.
unique_compiles bigint Liczba kompilacji i rekompilacji, które skorzystałyby na braku tej grupy indeksu. Kompilacje i rekompilacje wielu różnych zapytań mogą przyczynić się do tej wartości kolumny.
user_seeks bigint Liczba wyszukiwań spowodowanych zapytaniami użytkownika, do których zalecany indeks w grupie mógł być użyty.
user_scans bigint Liczba skanów spowodowanych zapytaniami użytkownika, do których zalecany indeks w grupie mógł być użyty.
last_user_seek datetime Data i godzina ostatniego poszukiwania spowodowane zapytaniami użytkownika, do których zalecany indeks w grupie mógł zostać użyty.
last_user_scan datetime Data i godzina ostatniego skanowania spowodowane zapytaniami użytkownika, do których zalecany indeks w grupie mógł zostać użyty.
avg_total_user_cost float Średni koszt zapytań użytkownika, który można zmniejszyć o indeks w grupie.
avg_user_impact float Średnia procentowa korzyść, jaką zapytania użytkownika mogłyby odnieść, gdyby ta brakująca grupa indeksów została wdrożona. Wartość ta oznacza, że koszt zapytań średnio spadłby o ten procent, gdyby ta brakująca grupa indeksów została wdrożona.
system_seeks bigint Liczba wyszukiwań wywołanych zapytaniami systemowymi, takimi jak automatyczne statystyki, do których zalecany indeks w grupie mógł zostać użyty. Więcej informacji znajdziesz w sekcji Auto Stats Event Class.
system_scans bigint Liczba skanów spowodowanych zapytaniami systemowymi, do których zalecany indeks w grupie mógł być użyty.
last_system_seek datetime Data i czas ostatniego poszukiwania systemu spowodowane zapytaniami systemowymi, do których zalecany indeks w grupie mógł zostać użyty.
last_system_scan datetime Data i godzina ostatniego skanowania systemu spowodowane zapytaniami systemowymi, do których zalecany indeks w grupie mógł zostać użyty.
avg_total_system_cost float Średni koszt zapytań systemowych, które można by zmniejszyć o indeks w grupie.
avg_system_impact float Średnia procentowa korzyść, jaką zapytania systemowe mogłyby odnieść, gdyby ta brakująca grupa indeksów została wdrożona. Wartość ta oznacza, że koszt zapytań średnio spadłby o ten procent, gdyby ta brakująca grupa indeksów została wdrożona.

Uwagi

Informacje zwracane przez sys.dm_db_missing_index_group_stats są aktualizowane przez każde wykonanie zapytania, a nie każde kompilowanie czy rekompilację zapytań. Statystyki użytkowania nie są utrzymywane i są przechowywane tylko do momentu ponownego uruchomienia silnika bazy danych. Administratorzy baz danych powinni okresowo tworzyć kopie zapasowe brakujących informacji indeksowych, jeśli chcą zachować statystyki użytkowania po recyklingu serwera. Użyj kolumny sqlserver_start_time w sys.dm_os_sys_info , aby znaleźć ostatni czas uruchamiania aparatu bazy danych.

Uwaga / Notatka

Zestaw wyników dla tego DMV jest ograniczony do 600 wierszy. Każdy wiersz zawiera jeden brakujący indeks. Jeśli brakuje Ci ponad 600 indeksów, powinieneś zająć się istniejącymi brakującymi indeksami, aby potem zobaczyć nowsze.

Jedna brakująca grupa indeksów może mieć kilka zapytań wymagających tego samego indeksu. Więcej informacji o pojedynczych zapytaniach, które wymagały konkretnego indeksu w tym DMV, można znaleźć w sys.dm_db_missing_index_group_stats_query.

Permissions

Aby zapytać o ten dynamiczny widok zarządzania, użytkownicy muszą otrzymać uprawnienia VIEW SERVER STATE lub dowolne uprawnienia implikujące VIEW SERVER STATE.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Przykłady

Poniższe przykłady ilustrują, jak korzystać z dynamicznego widoku sys.dm_db_missing_index_group_stats zarządzania. Dowiedz się więcej o wskazówkach dotyczących używania brakujących indeksów w strojeniu indeksów nieklastrowanych z brakującymi sugestiami indeksowymi.

A. Znajdź 10 brakujących indeksów z najwyższą oczekiwaną poprawą zapytań użytkowników

Następujące zapytanie określa, które 10 brakujących indeksów przyniosłoby najwyższą oczekiwaną kumulatywną poprawę, w kolejności malejącej, dla zapytań użytkownika.

SELECT TOP 10 *  
FROM sys.dm_db_missing_index_group_stats  
ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;  

B. Znajdź poszczególne brakujące indeksy oraz ich szczegóły kolumn dla konkretnej grupy indeksów brakujących

Poniższe zapytanie określa, które brakujące indeksy stanowią daną grupę indeksów brakujących i wyświetla szczegóły ich kolumn. Dla tego przykładu, brakujący indeks group_handle wynosi 24.

SELECT migs.group_handle, mid.*  
FROM sys.dm_db_missing_index_group_stats AS migs  
INNER JOIN sys.dm_db_missing_index_groups AS mig  
    ON (migs.group_handle = mig.index_group_handle)  
INNER JOIN sys.dm_db_missing_index_details AS mid  
    ON (mig.index_handle = mid.index_handle)  
WHERE migs.group_handle = 24;  

To zapytanie podaje nazwę bazy danych, schematu i tabeli, w której brakuje indeksu. Zawiera także nazwy kolumn, które powinny być używane dla klucza indeksowego. Pisząc polecenie CREATE INDEX DDL w celu implementacji brakujących indeksów, najpierw wypisz kolumny równości, a następnie kolumny nierówności w klauzuli ON <table_name> w instrukcji CREATE INDEX. Uwzględnione kolumny powinny być wymienione w klauzuli INCLUDE w instrukcji CREATE INDEX. Aby określić efektywną kolejność kolumn równości, uporządkuj je według selektywności, wymieniając najbardziej selektywne kolumny jako pierwsze (najbardziej lewo na liście kolumn). Dowiedz się, jak stosować sugestie dotyczące brakujących indeksów.

Dalsze kroki

Dowiedz się więcej o brakującej funkcji indeksu w następujących artykułach: