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 2019 (15.x) i nowsze wersje bazy danych
SQL Sql Database azure SQL
Database
w usłudze Microsoft Fabric
Zwraca informacje o zapytaniach, które wymagały brakującego indeksu z grup brakujących indeksów, z wyłączeniem indeksów przestrzennych. Na brakującą grupę indeksów może być zwracanych więcej niż jedno zapytanie. Jedna brakująca grupa indeksów może mieć kilka zapytań wymagających tego samego indeksu.
W bazie danych Azure SQL dynamiczne widoki zarządzania nie mogą ujawniać informacji, które mogłyby wpłynąć na zawartość bazy, ani udostępniać 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. |
query_hash |
binary(8) | Wartość skrótu binarnego obliczana dla zapytania i używana do identyfikowania zapytań z podobną logiką. Możesz użyć skrótu zapytania, aby określić zagregowane użycie zasobów dla zapytań, które różnią się tylko wartościami literału. |
query_plan_hash |
binary(8) | Wartość skrótu binarnego obliczona na planie wykonywania zapytania i używana do identyfikowania podobnych planów wykonywania zapytań. Możesz użyć skrótu planu zapytania, aby znaleźć skumulowany koszt zapytań z podobnymi planami wykonywania. Zawsze 0x000 , gdy natywnie skompilowana procedura przechowywana zapytuje tabelę zoptymalizowaną pod pamięć. |
last_sql_handle |
varbinary(64) | Token, który jednoznacznie identyfikuje procedurę wsadową lub przechowywaną ostatniego skompilowanego wyrażenia, które wymagało tego indeksu. Można użyć go last_sql_handle do pobrania tekstu SQL zapytania, wywołując funkcję dynamicznego zarządzania sys.dm_exec_sql_text. |
last_statement_start_offset |
int | Wskazuje, w bajtach, zaczynając od 0, pozycję początkową zapytania, które wiersz opisuje w tekście swojego obiektu wsadowego lub trwałego dla ostatniego skompilowanego zaświadczenia, które wymagało tego indeksu w swojej partii SQL. |
last_statement_end_offset |
int | Wskazuje, w bajtach, zaczynając od 0, końcową pozycję zapytania, które wiersz opisuje w tekście swojego obiektu wsadowego lub trwałego, dla ostatniego skompilowanego zaświadczenia, które wymagało tego indeksu w swojej partii SQL. |
last_statement_sql_handle |
varbinary(64) | Token, który jednoznacznie identyfikuje procedurę wsadową lub przechowywaną ostatniego skompilowanego wyrażenia, które wymagało tego indeksu. Używane przez Query Store. W przeciwieństwie do , sys.query_store_query_text odnosi się do last_sql_handlewidoku statement_sql_handle katalogowego Query Store sys.query_store_query_text.Zwraca, 0 jeśli Storage Query Store nie był włączony podczas kompilacji zapytania. |
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_query 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. Możesz także utrzymywać brakujące indeksy za pomocą Query Store.
Permissions
Aby zapytać o ten dynamiczny widok zarządzania, użytkownicy muszą otrzymać VIEW SERVER STATE uprawnienia lub dowolne uprawnienia sugerujące takie VIEW SERVER STATE uprawnienia, zarówno w SQL Server 2019 (15.x) jak i w poprzednich wersjach.
Wymaga uprawnień VIEW SERVER PERFORMANCE STATE na serwerze, dla SQL Server 2022 (16.x) i nowszych wersji.
Przykłady
Poniższe przykłady ilustrują, jak korzystać z dynamicznego widoku sys.dm_db_missing_index_group_stats_query zarządzania.
A. Znajdź najnowszy tekst zapytań o 10 najczęściej oczekiwanych ulepszeń w zakresie zapytań użytkowników
Następujące zapytanie zwraca ostatni zarejestrowany tekst zapytania dla 10 brakujących indeksów, które przyniosłyby najwyższą oczekiwaną kumulatywną poprawę, w kolejności malejącej.
SELECT TOP 10
SUBSTRING
(
sql_text.text,
misq.last_statement_start_offset / 2 + 1,
(
CASE misq.last_statement_start_offset
WHEN -1 THEN DATALENGTH(sql_text.text)
ELSE misq.last_statement_end_offset
END - misq.last_statement_start_offset
) / 2 + 1
),
misq.*
FROM sys.dm_db_missing_index_group_stats_query AS misq
CROSS APPLY sys.dm_exec_sql_text(misq.last_sql_handle) AS sql_text
ORDER BY misq.avg_total_user_cost
* misq.avg_user_impact
* (misq.user_seeks + misq.user_scans) DESC;
Treści powiązane
- 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 (Transact-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- STWÓRZ INDEKS (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Monitorowanie wydajności za pomocą magazynu zapytań