Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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:
- Dostrajanie indeksów nieklastrowanych za pomocą sugestii brakujących indeksów
- sys.dm_db_missing_index_columns (Transact-SQL)
- sys.dm_db_missing_index_details (Transact-SQL)
- sys.dm_db_missing_index_groups (Transact-SQL)
- sys.dm_db_missing_index_group_stats_query (Transact-SQL)
- STWÓRZ INDEKS (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)