Di SQL Server, Anda dapat menggunakan SET SHOWPLAN_XML
pernyataan untuk mengembalikan informasi rinci tentang bagaimana pernyataan T-SQL akan dieksekusi, dalam bentuk dokumen XML yang terdefinisi dengan baik.
Ini mirip dengan SHOWPLAN_ALL
, kecuali SHOWPLAN_ALL
mengembalikan kumpulan datanya berupa baris yang membentuk pohon hierarki.
Anda dapat mengatur SHOWPLAN_XML
ke salah satu ON
atau OFF
.
Ketika SHOWPLAN_XML
adalah ON
, semua pernyataan T-SQL berikutnya tidak dieksekusi. Sebaliknya SQL Server mengembalikan informasi eksekusi untuk pernyataan (tanpa menjalankannya).
Contoh
Berikut ini contoh untuk didemonstrasikan.
SET SHOWPLAN_XML ON;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Perhatikan bahwa SET SHOWPLAN_XML
tidak dapat ditentukan di dalam prosedur tersimpan, dan itu harus menjadi satu-satunya pernyataan dalam sebuah batch.
Hasil yang Anda peroleh mungkin bergantung pada alat yang Anda gunakan untuk mengakses SQL Server.
Ketika saya menjalankan ini di Azure Data Studio, saya dapat mengklik berbagai tab untuk mendapatkan tampilan hasil yang berbeda.
Hasil tab menampilkan string XML mentah:
Mengklik baris akan membuka dokumen XML di tab baru:
Paket Kueri tab menampilkan representasi grafis dari hasil:
Operasi Teratas tab menyajikan data dalam format tabel yang memungkinkan Anda mengurutkan data menurut berbagai metrik:
Tidak Berfungsi?
Jika tidak berhasil untuk Anda, pastikan Sertakan Rencana Eksekusi Aktual tidak dipilih dalam SSMS. Saat ini dipilih, SET SHOWPLAN_XML ON
tidak menghasilkan keluaran XML Showplan.
Cara Mematikannya
Anda dapat mematikannya dengan menggunakan SET SHOWPLAN_XML OFF
.
Setelah Anda melakukannya, pernyataan berikutnya akan dijalankan seperti biasa.
SET SHOWPLAN_XML OFF;
GO
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO
Hasil:
Commands completed successfully. +---------+-----------+---------+-----------+-----------+ | CatId | CatName | DogId | DogName | GoodDog | |---------+-----------+---------+-----------+-----------| | 2 | Fluffy | 2 | Fluffy | 0 | +---------+-----------+---------+-----------+-----------+ (1 row affected) Commands completed successfully.
Rencana Eksekusi dalam GUI
Jika Anda menggunakan alat grafis seperti SSMS atau Azure Data Studio, Anda mungkin memiliki opsi pintasan untuk menampilkan perkiraan rencana eksekusi kueri grafis. Ini memungkinkan Anda untuk melihat paket kueri tanpa perlu menjalankan SET SHOWPLAN_XML ON
.
Untuk menjalankan perkiraan rencana kueri:
- Dalam SSMS Anda dapat menggunakan Ctrl + L untuk melakukan ini. Atau Anda dapat mengeklik Tampilkan Perkiraan Rencana Eksekusi ikon, atau klik kanan di jendela kueri dan pilih Tampilkan Perkiraan Rencana Eksekusi . Ini akan menyelamatkan Anda dari keharusan mengubah
SHOWPLAN_XML
aktif dan nonaktif dalam kode Anda. - Di Azure Data Studio, Anda dapat mengklik tombol Jelaskan tombol di atas jendela kueri.
Anda juga dapat menjalankan rencana kueri yang sebenarnya:
- Di SSMS, pada Kueri menu, klik Sertakan Rencana Eksekusi Aktual atau klik Sertakan Rencana Eksekusi Aktual tombol bilah alat.
- Di Azure Data Studio, buka Tampilan> Palet Perintah dan ketik Jalankan Kueri Saat Ini dengan Paket Aktual .
Perhatikan bahwa jika Sertakan Rencana Eksekusi Aktual dipilih dalam SSMS, SET SHOWPLAN_XML ON
opsi tidak menghasilkan keluaran XML Showplan. Coba hapus Sertakan Rencana Eksekusi Aktual tombol ini sebelum menggunakan SET
pilihan.
Namun, saya menemukan Azure Data Studio melakukan yang sebaliknya SHOWPLAN_XML ON
tampaknya menimpa Jalankan Kueri Saat Ini dengan Paket Aktual opsi, kecuali jika saya menjalankan Jelaskan pertama (perkiraan paket kueri), setelah itu Jalankan Kueri Saat Ini dengan Paket Aktual tiba-tiba berfungsi (Baris Sebenarnya dan Eksekusi Sebenarnya kolom Operasi Teratas tab mengembalikan data yang sesuai).
Sebaiknya matikan opsi XML Showplan sebelum menggunakan metode lain untuk mengambil paket kueri.