Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri
Microsoft Fabric'te
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği SQL veritabanı
Eksik indeks gruplarından eksik bir indeks gerektiren sorgular hakkında bilgi döndürür, mekânsal indeksler hariç. Eksik indeks grubu için birden fazla sorgu döndürülebilir. Eksik bir indeks grubunun aynı indekse ihtiyacı olan birkaç sorgu olabilir.
Azure SQL Veritabanı'nda, dinamik yönetim görünümleri veritabanı muhafızlığını etkileyecek bilgileri veya kullanıcının erişebildiği diğer veritabanları hakkında bilgileri açığa çıkaramaz. Bu bilgilerin açığa çıkmasını önlemek için, bağlı kiracıya ait olmayan verileri içeren her satır filtrelenir.
| Sütun adı | Veri türü | Description |
|---|---|---|
group_handle |
int | Eksik bir grup indeksleri belirler. Bu tanımlayıcı sunucu genelinde benzersizdir. Diğer sütunlar, gruptaki indeksin eksik olarak kabul edilen tüm sorgular hakkında bilgi sağlar. Bir indeks grubu yalnızca bir indeks içerir. sys.dm_db_missing_index_groups içinde birleştirilebilir index_group_handle. |
query_hash |
binary(8) | Sorguda hesaplanan ve benzer mantığa sahip sorguları tanımlamak için kullanılan ikili karma değeri. Sorgu karması kullanarak yalnızca değişmez değerlerle farklılık gösteren sorguların toplam kaynak kullanımını belirleyebilirsiniz. |
query_plan_hash |
binary(8) | Sorgu yürütme planında hesaplanan ve benzer sorgu yürütme planlarını tanımlamak için kullanılan ikili karma değer. Benzer yürütme planlarına sahip sorguların toplu maliyetini bulmak için sorgu planı karması kullanabilirsiniz.0x000 Her zaman doğal derlenmiş bir depolanmış prosedür bellek optimize edilmiş bir tabloyu sorguladığında. |
last_sql_handle |
varbinary(64) | Bu indekse ihtiyaç duyan son derlenmiş ifadenin toplu veya depolanmış prosedürünü benzersiz şekilde tanımlayan bir token. Dinamik last_sql_handle yönetim fonksiyonu sys.dm_exec_sql_text çağrılarak sorgunun SQL metnini almak için kullanılabilir. |
last_statement_start_offset |
int | 0 ile başlayan bayt cinsinden, satırın betch veya kalıcı nesnesinin metininde tarif ettiği sorgunun başlangıç konumunu gösterir; bu indeks SQL batch'inde bu indekse ihtiyaç duyan son derlenmiş ifadedir. |
last_statement_end_offset |
int | Sıranın betch veya kalıcı nesnesinin metininde tarif ettiği sorgu bitiş konumunu bayt 0cinsinden, SQL batch'inde bu indeksin gerektirdiği son derlenmiş ifade için belirtir. |
last_statement_sql_handle |
varbinary(64) | Bu indekse ihtiyaç duyan son derlenmiş ifadenin toplu veya depolanmış prosedürünü benzersiz şekilde tanımlayan bir token. Query Store tarafından kullanılıyor. Bunun aksine last_sql_handle, sys.query_store_query_textstatement_sql_handle Query Store katalog görünümü tarafından kullanılan referanslar sys.query_store_query_text.Query Store derlenirken Query Store etkin değilse geri 0 döner. |
user_seeks |
bigint | Gruptaki önerilen indeksin kullanılabileceği kullanıcı sorguları nedeniyle yapılan arama sayısı. |
user_scans |
bigint | Gruptaki önerilen indeksin kullanılabileceği kullanıcı sorguları nedeniyle yapılan tarama sayısı. |
last_user_seek |
datetime | Gruptaki önerilen indeksin kullanılabileceği kullanıcı sorguları nedeniyle son arama tarihi ve saati. |
last_user_scan |
datetime | Grupta önerilen indeksin kullanılabileceği kullanıcı sorguları nedeniyle son taramanın tarihi ve saati. |
avg_total_user_cost |
float | Gruptaki indeks tarafından azaltılabilen kullanıcı sorgularının ortalama maliyeti. |
avg_user_impact |
float | Bu eksik endeks grubu uygulanırsa kullanıcı sorgularının yaşayabileceği ortalama yüzde faydası. Bu değer, eksik endeks grubu uygulansaydı sorgu maliyetinin ortalama olarak bu yüzdeyi düşeceği anlamına gelir. |
system_seeks |
bigint | Sistem sorguları (örneğin otomatik istatistik sorguları) nedeniyle oluşturulan ve gruptaki önerilen indeksin kullanılabileceği arama sayısı. Daha fazla bilgi için Otomatik İstatistik Etkinlik Sınıfına bakınız. |
system_scans |
bigint | Grupta önerilen indeksin kullanılabileceği sistem sorguları nedeniyle yapılan tarama sayısı. |
last_system_seek |
datetime | Gruptaki önerilen indeksin kullanılabileceği sistem sorguları nedeniyle son sistem aramasının tarihi ve saati. |
last_system_scan |
datetime | Gruptaki önerilen indeksin kullanılabileceği sistem sorguları nedeniyle son sistem taramasının tarihi ve saati. |
avg_total_system_cost |
float | Gruptaki endeks tarafından azaltılabilen sistem sorgularının ortalama maliyeti. |
avg_system_impact |
float | Bu eksik endeks grubu uygulanırsa sistem sorgularının yaşanabileceği ortalama yüzde faydası. Bu değer, eksik endeks grubu uygulansaydı sorgu maliyetinin ortalama olarak bu yüzdeyi düşeceği anlamına gelir. |
Açıklamalar
Geri sys.dm_db_missing_index_group_stats_query dönen bilgiler, her sorgu derlemesi veya yeniden derleme ile değil, her sorgu yürütülmesiyle güncellenir. Kullanım istatistikleri devam etmez ve sadece veritabanı motoru yeniden başlatılana kadar saklanır.
Veritabanı yöneticileri, sunucu geri dönüşümünden sonra kullanım istatistiklerini korumak istiyorlarsa, eksik indeks bilgilerinin yedeği olarak düzenli olarak yedeklemelidir.
sqlserver_start_time Son veritabanı altyapısı başlangıç zamanını bulmak için sys.dm_os_sys_info sütununu kullanın. Ayrıca eksik indeksleri Query Store ile devam ettirebilirsiniz.
Permissions
Bu dinamik yönetim görünümünü sorgulamak için, kullanıcılara SQL Server 2019 (15.x) ve önceki sürümler için izin veya bu VIEW SERVER STATE izni ima eden herhangi bir izin verilmesi VIEW SERVER STATE gerekir.
SQL Server 2022 (16.x) ve sonraki sürümler için sunucuda VIEW SERVER PERFORMANCE STATE izni gerektirir.
Örnekler
Aşağıdaki örnekler dinamik yönetim görünümünün sys.dm_db_missing_index_group_stats_query nasıl kullanılacağını göstermektedir.
A. Kullanıcı sorguları için en son 10 beklenen iyileştirme için en son sorgu metnini bulun
Aşağıdaki sorgu, en yüksek beklenen kümülatif iyileşmeyi sağlayacak 10 eksik indeks için son kaydedilen sorgu metnini azalan sırayla döndürür.
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;
İlgili içerik
- Kümelenmemiş dizinleri eksik indeks önerileri kullanarak iyileştirin
- 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)
- İNDEKS OLUŞTUR (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- Sorgu Deposu’nu kullanarak performansı izleme