Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang
lebih baru database Azure SQL Database
Azure SQL Managed Instance
SQL di Microsoft Fabric
Mengembalikan informasi tentang kueri yang memerlukan indeks yang hilang dari grup indeks yang hilang, tidak termasuk indeks spasial. Lebih dari satu kueri mungkin dikembalikan per grup indeks yang hilang. Satu grup indeks yang hilang mungkin memiliki beberapa kueri yang membutuhkan indeks yang sama.
Di Azure SQL Database, tampilan manajemen dinamis tidak dapat mengekspos informasi yang akan memengaruhi penahanan database, atau mengekspos informasi tentang database lain yang dapat diakses pengguna. Untuk menghindari mengekspos informasi ini, setiap baris yang berisi data yang bukan milik penyewa yang tersambung difilter.
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
group_handle |
int | Mengidentifikasi sekelompok indeks yang hilang. Pengidentifikasi ini unik di seluruh server. Kolom lain menyediakan informasi tentang semua kueri di mana indeks dalam grup dianggap hilang. Grup indeks hanya berisi satu indeks. Dapat digabungkan ke index_group_handle dalam sys.dm_db_missing_index_groups. |
query_hash |
biner(8) | Nilai hash biner dihitung pada kueri dan digunakan untuk mengidentifikasi kueri dengan logika serupa. Anda bisa menggunakan hash kueri untuk menentukan penggunaan sumber daya agregat untuk kueri yang hanya berbeda dengan nilai harfiah. |
query_plan_hash |
biner(8) | Nilai hash biner dihitung pada rencana eksekusi kueri dan digunakan untuk mengidentifikasi rencana eksekusi kueri serupa. Anda dapat menggunakan hash rencana kueri untuk menemukan biaya kumulatif kueri dengan rencana eksekusi serupa. Selalu 0x000 ketika prosedur tersimpan yang dikompilasi secara native mengkueri tabel yang dioptimalkan memori. |
last_sql_handle |
varbinary(64) | Token yang secara unik mengidentifikasi batch atau prosedur tersimpan dari pernyataan kompilasi terakhir yang memerlukan indeks ini.last_sql_handle dapat digunakan untuk mengambil teks SQL kueri dengan memanggil fungsi manajemen dinamis sys.dm_exec_sql_text. |
last_statement_start_offset |
int | Menunjukkan, dalam byte, dimulai dengan 0, posisi awal kueri yang dijelaskan baris dalam teks batch atau objek yang disimpan untuk pernyataan terakhir yang dikompilasi yang memerlukan indeks ini dalam batch SQL-nya. |
last_statement_end_offset |
int | Menunjukkan, dalam byte, dimulai dengan 0, posisi akhir kueri yang dijelaskan baris dalam teks batch atau objek persisted, untuk pernyataan kompilasi terakhir yang membutuhkan indeks ini dalam batch SQL-nya. |
last_statement_sql_handle |
varbinary(64) | Token yang secara unik mengidentifikasi batch atau prosedur tersimpan dari pernyataan kompilasi terakhir yang memerlukan indeks ini. Digunakan oleh Penyimpanan Kueri. Tidak seperti last_sql_handle, mereferensikan yang sys.query_store_query_text digunakan oleh tampilan statement_sql_handle.Mengembalikan 0 jika Penyimpanan Kueri tidak diaktifkan saat kueri dikompilasi. |
user_seeks |
bigint | Jumlah pencarian yang disebabkan oleh kueri pengguna yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. |
user_scans |
bigint | Jumlah pemindaian yang disebabkan oleh kueri pengguna yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. |
last_user_seek |
datetime | Tanggal dan waktu pencarian terakhir yang disebabkan oleh kueri pengguna yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. |
last_user_scan |
datetime | Tanggal dan waktu pemindaian terakhir yang disebabkan oleh kueri pengguna yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. |
avg_total_user_cost |
float | Biaya rata-rata kueri pengguna yang dapat dikurangi oleh indeks dalam grup. |
avg_user_impact |
float | Manfaat persentase rata-rata yang dapat dialami kueri pengguna jika grup indeks yang hilang ini diterapkan. Nilai berarti bahwa biaya kueri akan rata-rata turun berdasarkan persentase ini jika grup indeks yang hilang ini diterapkan. |
system_seeks |
bigint | Jumlah pencarian yang disebabkan oleh kueri sistem, seperti kueri statistik otomatis, yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. Untuk informasi selengkapnya, lihat Kelas Peristiwa Statistik Otomatis. |
system_scans |
bigint | Jumlah pemindaian yang disebabkan oleh kueri sistem yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. |
last_system_seek |
datetime | Tanggal dan waktu pencarian sistem terakhir yang disebabkan oleh kueri sistem yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. |
last_system_scan |
datetime | Tanggal dan waktu pemindaian sistem terakhir yang disebabkan oleh kueri sistem yang dapat digunakan oleh indeks yang direkomendasikan dalam grup. |
avg_total_system_cost |
float | Biaya rata-rata kueri sistem yang dapat dikurangi oleh indeks dalam grup. |
avg_system_impact |
float | Manfaat persentase rata-rata yang dapat dialami kueri sistem jika grup indeks yang hilang ini diterapkan. Nilai berarti bahwa biaya kueri akan rata-rata turun berdasarkan persentase ini jika grup indeks yang hilang ini diterapkan. |
Keterangan
Informasi yang dikembalikan oleh sys.dm_db_missing_index_group_stats_query diperbarui oleh setiap eksekusi kueri, bukan oleh setiap kompilasi atau kompilasi ulang kueri. Statistik penggunaan tidak dipertahankan dan disimpan hanya sampai mesin database dimulai ulang.
Administrator database harus secara berkala membuat salinan cadangan informasi indeks yang hilang jika mereka ingin menyimpan statistik penggunaan setelah daur ulang server.
sqlserver_start_time Gunakan kolom di sys.dm_os_sys_info untuk menemukan waktu mulai mesin database terakhir. Anda juga bisa mempertahankan indeks yang hilang dengan Penyimpanan Kueri.
Izin
Untuk mengkueri tampilan manajemen dinamis ini, pengguna harus diberikan VIEW SERVER STATE izin atau izin apa pun yang menyiratkan VIEW SERVER STATE izin, untuk SQL Server 2019 (15.x) dan versi sebelumnya.
Memerlukan izin VIEW SERVER PERFORMANCE STATE di server, untuk SQL Server 2022 (16.x) dan versi yang lebih baru.
Contoh
Contoh berikut mengilustrasikan cara menggunakan sys.dm_db_missing_index_group_stats_query tampilan manajemen dinamis.
J. Menemukan teks kueri terbaru untuk 10 penyempurnaan tertinggi yang diantisipasi untuk kueri pengguna
Kueri berikut mengembalikan teks kueri terakhir yang direkam untuk 10 indeks yang hilang yang akan menghasilkan peningkatan kumulatif tertinggi yang diantisipasi, dalam urutan menurun.
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;
Konten terkait
- Menyetel indeks non-kluster dengan saran indeks yang hilang
- sys.dm_db_missing_index_columns (T-SQL)
- sys.dm_db_missing_index_details (T-SQL)
- sys.dm_db_missing_index_groups (T-SQL)
- sys.dm_db_missing_index_group_stats (T-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- BUAT INDEKS (Transact-SQL)
- sys.dm_os_sys_info (T-SQL)
- Memantau kinerja dengan menggunakan Query Store