DBCC SHOW_STATISTICS (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Menampilkan statistik pengoptimalan kueri saat ini untuk tabel atau tampilan terindeks. Pengoptimal kueri menggunakan statistik untuk memperkirakan kardinalitas atau jumlah baris dalam hasil kueri, yang memungkinkan Pengoptimal Kueri membuat rencana kueri berkualitas tinggi. Misalnya, Pengoptimal Kueri dapat menggunakan perkiraan kardinalitas untuk memilih operator pencarian indeks alih-alih operator pemindaian indeks dalam rencana kueri, meningkatkan performa kueri dengan menghindari pemindaian indeks intensif sumber daya.

Pengoptimal Kueri menyimpan statistik untuk tabel atau tampilan terindeks dalam objek statistik. Untuk tabel, objek statistik dibuat pada indeks atau daftar kolom tabel. Objek statistik mencakup header dengan metadata tentang statistik, histogram dengan distribusi nilai di kolom kunci pertama objek statistik, dan vektor kepadatan untuk mengukur korelasi lintas kolom. Mesin Database dapat menghitung perkiraan kardinalitas dengan salah satu data dalam objek statistik. Untuk informasi selengkapnya, lihat Statistik dan Estimasi Kardinalitas (SQL Server).

DBCC SHOW_STATISTICS menampilkan vektor header, histogram, dan kepadatan berdasarkan data yang disimpan dalam objek statistik. Sintaks memungkinkan Anda menentukan tabel atau tampilan terindeks bersama dengan nama indeks target, nama statistik, atau nama kolom.

Pembaruan penting dalam versi SQL Server sebelumnya:

  • Mulai dari SQL Server 2012 (11.x) Paket Layanan 1, tampilan manajemen dinamis sys.dm_db_stats_properties tersedia untuk mengambil informasi header yang terprogram yang terkandung dalam objek statistik untuk statistik non-inkremental.

  • Mulai dari Paket Layanan SQL Server 2014 (12.x) 2 dan SQL Server 2012 (11.x) Paket Layanan 1, tampilan manajemen dinamis sys.dm_db_incremental_stats_properties tersedia untuk mengambil informasi header secara terprogram yang terkandung dalam objek statistik untuk statistik tambahan.

  • Mulai dari SQL Server 2016 (13.x) Paket Layanan 1 CU 2, tampilan manajemen dinamis sys.dm_db_stats_histogram tersedia untuk mengambil informasi histogram secara terprogram yang terkandung dalam objek statistik.

  • Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

  • Untuk informasi selengkapnya tentang statistik di Microsoft Fabric, lihat Statistik.

Konvensi sintaks transact-SQL

Sintaks

Sintaks untuk SQL Server dan Azure SQL Database:

DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target )
[ WITH [ NO_INFOMSGS ] < option > [ , ...n ] ]
< option > ::=
    STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM
[ ; ]

Sintaks untuk Azure Synapse Analytics, Analytics Platform System (PDW), dan Microsoft Fabric:

DBCC SHOW_STATISTICS ( table_name , target )
    [ WITH { STAT_HEADER | DENSITY_VECTOR | HISTOGRAM } [ , ...n ] ]
[ ; ]

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

table_or_indexed_view_name

Nama tabel atau tampilan terindeks untuk menampilkan informasi statistik.

table_name

Nama tabel yang berisi statistik yang akan ditampilkan. Tabel tidak boleh berupa tabel eksternal.

target

Nama indeks, statistik, atau kolom untuk menampilkan informasi statistik. target diapit dalam tanda kurung siku, tanda kutip tunggal, tanda kutip ganda, atau tanpa tanda kutip.

  • Jika target adalah nama indeks atau statistik yang ada pada tabel atau tampilan terindeks, informasi statistik tentang target ini dikembalikan.
  • Jika target adalah nama kolom yang ada, dan objek statistik yang dibuat secara otomatis pada kolom ini ada, informasi tentang statistik yang dibuat secara otomatis akan dikembalikan.

Jika statistik yang dibuat secara otomatis tidak ada untuk target kolom, pesan kesalahan 2767 dikembalikan.

Di Azure Synapse Analytics and Analytics Platform System (PDW), target tidak boleh berupa nama kolom.

Di Gudang di Microsoft Fabric, target dapat berupa nama statistik histogram kolom tunggal atau kolom. Jika nama kolom digunakan untuk target, perintah ini mengembalikan informasi distribusi hanya tentang statistik histogram yang dihasilkan secara otomatis. Untuk melihat informasi tentang statistik histogram yang dibuat secara manual, tentukan nama statistik sebagai target.

NO_INFOMSGS

Menekan semua pesan informasi yang memiliki tingkat keparahan dari 0 hingga 10.

STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM [ , n ]

Menentukan satu atau beberapa opsi ini membatasi kumpulan hasil yang dikembalikan oleh pernyataan ke opsi atau opsi yang ditentukan. Jika tidak ada opsi yang ditentukan, semua informasi statistik dikembalikan.

STATS_STREAM diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

Tataan hasil

Tabel berikut ini menjelaskan kolom yang dikembalikan dalam tataan hasil saat STAT_HEADER ditentukan.

Nama kolom Deskripsi
Nama Nama objek statistik.
Diperbarui Tanggal dan waktu statistik terakhir diperbarui. Fungsi STATS_DATE adalah cara alternatif untuk mengambil informasi ini. Untuk informasi selengkapnya, lihat bagian Keterangan di halaman ini.
Baris Jumlah total baris dalam tabel atau tampilan terindeks saat statistik terakhir diperbarui. Jika statistik difilter atau sesuai dengan indeks yang difilter, jumlah baris mungkin kurang dari jumlah baris dalam tabel. Untuk informasi selengkapnya, lihat Statistik.
Baris Diambil Sampelnya Jumlah total baris yang diambil sampelnya untuk perhitungan statistik. Jika Baris Sampel < Baris, histogram dan hasil kepadatan yang ditampilkan adalah perkiraan berdasarkan baris sampel.
Langkah-langkah Jumlah langkah dalam histogram. Setiap langkah mencakup rentang nilai kolom diikuti dengan nilai kolom terikat atas. Langkah-langkah histogram ditentukan pada kolom kunci pertama dalam statistik. Jumlah maksimum langkah adalah 200.
Kepadatan Dihitung sebagai nilai 1/berbeda untuk semua nilai di kolom kunci pertama objek statistik, tidak termasuk nilai batas histogram. Nilai Kepadatan ini tidak digunakan oleh Pengoptimal Kueri dan ditampilkan untuk kompatibilitas mundur dengan versi sebelum SQL Server 2008 (10.0.x).
Panjang Kunci Rata-rata Jumlah rata-rata byte per nilai untuk semua kolom kunci dalam objek statistik.
Indeks String Ya menunjukkan objek statistik berisi statistik ringkasan string untuk meningkatkan perkiraan kardinalitas untuk predikat kueri yang menggunakan operator LIKE; misalnya, WHERE ProductName LIKE '%Bike'. Statistik ringkasan string disimpan secara terpisah dari histogram dan dibuat pada kolom kunci pertama objek statistik ketika jenis karakter, varchar, nchar, nvarchar, varchar(max), nvarchar(max), teks, atau ntext..
Ekspresi Filter Predikat untuk subset baris tabel yang disertakan dalam objek statistik. NULL = statistik yang tidak difilter. Untuk informasi selengkapnya tentang predikat yang difilter, lihat Membuat Indeks Terfilter. Untuk informasi selengkapnya tentang statistik yang difilter, lihat Statistik.
Baris Tidak Difilter Jumlah total baris dalam tabel sebelum menerapkan ekspresi filter. Jika Ekspresi Filter adalah NULL, Unfiltered Rows sama dengan Rows.
Persentase Sampel yang Dipertahankan Persentase sampel persisten yang digunakan untuk pembaruan statistik yang tidak secara eksplisit menentukan persentase pengambilan sampel. Jika nilainya nol, maka tidak ada persentase sampel yang dipertahankan yang ditetapkan untuk statistik ini.

Berlaku untuk: SQL Server 2016 (13.x) Paket Layanan 1 CU 4

Tabel berikut ini menjelaskan kolom yang dikembalikan dalam tataan hasil saat DENSITY_VECTOR ditentukan.

Nama kolom Deskripsi
Semua Kepadatan Kepadatan adalah nilai 1 /berbeda. Hasil menampilkan kepadatan untuk setiap awalan kolom dalam objek statistik, satu baris per kepadatan. Nilai yang berbeda adalah daftar berbeda dari nilai kolom per baris dan awalan per kolom. Misalnya, jika objek statistik berisi kolom kunci (A, B, C), hasilnya melaporkan kepadatan daftar nilai yang berbeda di masing-masing awalan kolom ini: (A), (A,B), dan (A, B, C). Menggunakan awalan (A, B, C), masing-masing daftar ini adalah daftar nilai yang berbeda: (3, 5, 6), (4, 4, 6), (4, 5, 6), (4, 5, 7). Menggunakan awalan (A, B) nilai kolom yang sama memiliki daftar nilai yang berbeda ini: (3, 5), (4, 4), dan (4, 5)
Panjang Rata-rata Panjang rata-rata, dalam byte, untuk menyimpan daftar nilai kolom untuk awalan kolom. Misalnya, jika nilai dalam daftar (3, 5, 6) masing-masing memerlukan 4 byte panjangnya adalah 12 byte.
Kolom Nama kolom dalam awalan di mana Semua kepadatan dan Panjang rata-rata ditampilkan.

Tabel berikut ini menjelaskan kolom yang dikembalikan dalam tataan hasil saat opsi HISTOGRAM ditentukan.

Nama kolom Deskripsi
RANGE_HI_KEY Nilai kolom terikat atas untuk langkah histogram. Nilai kolom juga disebut nilai kunci.
RANGE_ROWS Perkiraan jumlah baris yang nilai kolomnya berada dalam langkah histogram, tidak termasuk batas atas.
EQ_ROWS Perkiraan jumlah baris yang nilai kolomnya sama dengan batas atas langkah histogram.
DISTINCT_RANGE_ROWS Perkiraan jumlah baris dengan nilai kolom yang berbeda dalam langkah histogram, tidak termasuk batas atas.
AVG_RANGE_ROWS Jumlah rata-rata baris dengan nilai kolom duplikat dalam langkah histogram, tidak termasuk batas atas. Ketika DISTINCT_RANGE_ROWS lebih besar dari 0, AVG_RANGE_ROWS dihitung dengan membalai RANGE_ROWS dengan DISTINCT_RANGE_ROWS. Saat DISTINCT_RANGE_ROWS adalah 0, AVG_RANGE_ROWS mengembalikan 1 untuk langkah histogram.

Keterangan

Tanggal pembaruan statistik disimpan dalam objek blob statistik bersama dengan histogram dan vektor kepadatan, bukan dalam metadata. Ketika tidak ada data yang dibaca untuk menghasilkan data statistik, blob statistik tidak dibuat, tanggal tidak tersedia, dan kolom yang diperbarui adalah NULL. Ini adalah kasus untuk statistik yang difilter yang predikatnya tidak mengembalikan baris apa pun, atau untuk tabel kosong baru.

Histogram

Histogram mengukur frekuensi kemunculan untuk setiap nilai yang berbeda dalam himpunan data. Pengoptimal kueri menghitung histogram pada nilai kolom di kolom kunci pertama objek statistik, memilih nilai kolom dengan mengambil sampel baris secara statistik atau dengan melakukan pemindaian penuh semua baris dalam tabel atau tampilan. Jika histogram dibuat dari sekumpulan baris sampel, total yang disimpan untuk jumlah baris dan jumlah nilai yang berbeda adalah perkiraan dan tidak perlu berupa bilangan bulat utuh.

Untuk membuat histogram, pengoptimal kueri mengurutkan nilai kolom, menghitung jumlah nilai yang cocok dengan setiap nilai kolom yang berbeda lalu menggabungkan nilai kolom ke dalam maksimal 200 langkah histogram berdekatan. Setiap langkah menyertakan rentang nilai kolom diikuti dengan nilai kolom terikat atas. Rentang ini mencakup semua nilai kolom yang mungkin di antara nilai batas, tidak termasuk nilai batas itu sendiri. Nilai kolom terendah yang diurutkan adalah nilai batas atas untuk langkah histogram pertama.

Diagram berikut menunjukkan histogram dengan enam langkah. Area di sebelah kiri nilai batas atas pertama adalah langkah pertama.

Diagram of how a histogram is calculated from sampled column values.

Untuk setiap langkah histogram:

  • Garis tebal mewakili nilai batas atas (RANGE_HI_KEY) dan berapa kali garis tersebut terjadi (EQ_ROWS)
  • Area solid kiri RANGE_HI_KEY mewakili rentang nilai kolom dan jumlah rata-rata setiap nilai kolom terjadi (AVG_RANGE_ROWS). AVG_RANGE_ROWS untuk langkah histogram pertama selalu 0.
  • Garis putus-putus mewakili nilai sampel yang digunakan untuk memperkirakan jumlah total nilai yang berbeda dalam rentang (DISTINCT_RANGE_ROWS) dan jumlah total nilai dalam rentang (RANGE_ROWS). Pengoptimal kueri menggunakan RANGE_ROWS dan DISTINCT_RANGE_ROWS untuk menghitung AVG_RANGE_ROWS dan tidak menyimpan nilai sampel.

Pengoptimal kueri menentukan langkah-langkah histogram sesuai dengan signifikansi statistiknya. Ini menggunakan algoritma perbedaan maksimum untuk meminimalkan jumlah langkah dalam histogram sambil memaksimalkan perbedaan antara nilai batas. Jumlah maksimum langkah adalah 200. Jumlah langkah histogram dapat kurang dari jumlah nilai yang berbeda, bahkan untuk kolom dengan kurang dari 200 titik batas. Misalnya, kolom dengan 100 nilai berbeda dapat memiliki histogram dengan kurang dari 100 titik batas.

Vektor kepadatan

Pengoptimal kueri menggunakan kepadatan untuk meningkatkan perkiraan kardinalitas untuk kueri yang mengembalikan beberapa kolom dari tabel atau tampilan terindeks yang sama. Vektor kepadatan berisi satu kepadatan untuk setiap awalan kolom dalam objek statistik. Misalnya, jika objek statistik memiliki kolom CustomerIdkunci , ItemId dan Price, kepadatan dihitung pada setiap awalan kolom berikut.

Awalan kolom Kepadatan dihitung pada
(CustomerId) Baris dengan nilai yang cocok untuk CustomerId
(CustomerId, ItemId) Baris dengan nilai yang cocok untuk CustomerId dan ItemId
(CustomerId, ItemId, Price) Baris dengan nilai yang cocok untuk CustomerId, ItemId, dan Price

Batasan

DBCC SHOW_STATISTICS tidak menyediakan statistik untuk indeks spasial atau indeks penyimpan kolom yang dioptimalkan memori.

Izin untuk SQL Server dan SQL Database

Untuk melihat objek statistik, pengguna harus memiliki SELECT izin pada tabel.

Persyaratan berikut ada agar izin SELECT cukup untuk menjalankan perintah:

  • Pengguna harus memiliki izin pada semua kolom dalam objek statistik
  • Pengguna harus memiliki izin pada semua kolom dalam kondisi filter (jika ada)
  • Tabel tidak dapat memiliki kebijakan keamanan tingkat baris.
  • Jika salah satu kolom dalam objek statistik ditutupi dengan aturan Masking Data Dinamis, selain SELECT izin, pengguna harus memiliki UNMASK izin, atau menjadi anggota peran db_ddladmin .

Dalam versi sebelum Paket Layanan SQL Server 2012 (11.x) 1, pengguna harus memiliki tabel atau pengguna harus menjadi anggota peran server tetap sysadmin , peran database tetap db_owner , atau peran database tetap db_ddladmin .

Catatan

Untuk mengubah perilaku kembali ke perilaku Paket Layanan pra SQL Server 2012 (11.x), gunakan Bendera Pelacakan 9485.

Izin untuk Azure Synapse Analytics and Analytics Platform System (PDW)

DBCC SHOW_STATISTICSSELECT memerlukan izin pada tabel atau keanggotaan dalam peran server tetap sysadmin, peran database tetap db_owner, atau peran database tetap db_ddladmin.

Batasan dan Pembatasan untuk Azure Synapse Analytics dan Analytics Platform System (PDW)

DBCC SHOW_STATISTICS memperlihatkan statistik yang disimpan dalam Shell database di tingkat simpul Kontrol. Ini tidak menampilkan statistik yang dibuat secara otomatis oleh SQL Server pada simpul Komputasi.

DBCC SHOW_STATISTICS tidak didukung pada tabel eksternal.

Di Microsoft Fabric, DBCC SHOW_STATISTICS hanya menampilkan hasil untuk statistik histogram, bukan statistik ACE-*.

Contoh: SQL Server dan Azure SQL Database

J. Mengembalikan semua informasi statistik

Contoh berikut menampilkan semua informasi statistik untuk AK_Address_rowguid indeks Person.Address tabel dalam database AdventureWorks2022.

DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);
GO

B. Tentukan opsi HISTOGRAM

Ini membatasi informasi statistik yang ditampilkan untuk Customer_LastName data HISTOGRAM.

DBCC SHOW_STATISTICS ("dbo.DimCustomer", Customer_LastName) WITH HISTOGRAM;
GO

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Menampilkan isi dari satu objek statistik

Contoh berikut membuat objek statistik lalu menampilkan konten Customer_LastName statistik pada DimCustomer tabel dalam database sampel AdventureWorksPDW2022 .

-- Uses AdventureWorksPDW
--First, create a statistics object
CREATE STATISTICS Customer_LastName
ON AdventureWorksPDW2012.dbo.DimCustomer (LastName);
GO
DBCC SHOW_STATISTICS ("dbo.DimCustomer", Customer_LastName);
GO

Hasilnya menunjukkan header, vektor kepadatan, dan bagian dari histogram.

Screenshot showing DBCC SHOW_STATISTICS results.

Baca juga

Langkah berikutnya