Di SQL Server, Anda dapat menggunakan SET SHOWPLAN_ALL
pernyataan untuk mengembalikan informasi rinci tentang bagaimana pernyataan T-SQL dijalankan, serta perkiraan kebutuhan sumber daya untuk pernyataan.
SHOWPLAN_ALL
mengembalikan informasi sebagai sekumpulan baris yang membentuk pohon hierarki yang mewakili langkah-langkah yang diambil oleh prosesor kueri SQL Server saat mengeksekusi setiap pernyataan. Ini mirip dengan SHOWPLAN_TEXT
, kecuali SHOWPLAN_ALL
mengembalikan informasi yang lebih detail (dan dimaksudkan untuk digunakan dengan aplikasi yang dapat menangani outputnya).
Anda dapat mengatur SHOWPLAN_ALL
ke salah satu ON
atau OFF
.
Saat SHOWPLAN_ALL
adalah ON
, semua pernyataan T-SQL berikutnya tidak dieksekusi. Sebaliknya SQL Server mengembalikan informasi eksekusi untuk pernyataan (tanpa menjalankannya).
Penting untuk diperhatikan bahwa SHOWPLAN_ALL
memberikan perkiraan dari persyaratan sumber daya, dan bahwa persyaratan sumber daya yang sebenarnya mungkin berbeda ketika pernyataan tersebut benar-benar dijalankan.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SET SHOWPLAN_ALL ON;
GO
SELECT * FROM Cats;
GO
Perhatikan bahwa SET SHOWPLAN_ALL
tidak dapat ditentukan di dalam prosedur tersimpan, dan itu harus menjadi satu-satunya pernyataan dalam sebuah batch.
Seperti inilah hasilnya di Azure Data Studio:
Dan inilah tampilannya di mssql-cli (antarmuka baris perintah) saat menggunakan output vertikal:
Commands completed successfully. -[ RECORD 1 ]------------------------- StmtText | SELECT * FROM Cats; StmtId | 1 NodeId | 1 Parent | 0 PhysicalOp | NULL LogicalOp | NULL Argument | 1 DefinedValues | NULL EstimateRows | 3 EstimateIO | NULL EstimateCPU | NULL AvgRowSize | NULL TotalSubtreeCost | 0.0032853 OutputList | NULL Warnings | NULL Type | SELECT Parallel | 0 EstimateExecutions | NULL -[ RECORD 2 ]------------------------- StmtText | |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F])) StmtId | 1 NodeId | 2 Parent | 1 PhysicalOp | Clustered Index Scan LogicalOp | Clustered Index Scan Argument | OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F]) DefinedValues | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] EstimateRows | 3 EstimateIO | 0.003125 EstimateCPU | 0.0001603 AvgRowSize | 142 TotalSubtreeCost | 0.0032853 OutputList | [Test].[dbo].[Cats].[CatId], [Test].[dbo].[Cats].[CatName] Warnings | NULL Type | PLAN_ROW Parallel | 0 EstimateExecutions | 1 (2 rows affected) Commands completed successfully.
Ada banyak kolom, jadi saya menggunakan output vertikal di sini agar lebih mudah dibaca.
Jika kueri saya lebih kompleks, lebih banyak baris akan dikembalikan.
Berikut adalah contoh kueri (sedikit) yang lebih kompleks.
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Hasil:
Cara Mematikannya
Anda dapat mematikannya dengan menggunakan SET SHOWPLAN_ALL OFF
.
Setelah Anda melakukannya, pernyataan berikutnya akan dijalankan seperti biasa.
SET SHOWPLAN_ALL OFF;
GO
SELECT * FROM Cats;
GO
Hasil:
Commands completed successfully. +---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected) Commands completed successfully.
Usang atau Tidak?
Menurut artikel MSDN lama ini, SET SHOWPLAN_ALL
dijadwalkan untuk dihentikan di versi showplan mendatang, dan disarankan agar Anda menggunakan SET SHOWPLAN_XML
sebagai gantinya.
Namun, artikel MSDN itu untuk SQL Server 2008 R2, dan saat saya menulis ini, artikel tersebut tampaknya tidak ditinggalkan di SQL Server 2019. Faktanya, dokumentasi saat ini tidak menyebutkan penghentian, dan tidak disertakan ketika saya menjalankan daftar item yang tidak digunakan lagi di SQL Server.
Bagaimanapun, mungkin ada baiknya untuk mengingat hal ini sebelum menggunakannya di rilis mendatang.
Rencana Eksekusi Grafis
Jika Anda menggunakan alat grafis seperti SSMS atau Azure Data Studio, Anda mungkin memiliki opsi untuk melihat perkiraan rencana eksekusi kueri grafis untuk kueri saat ini.
- 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 .
- Di Azure Data Studio, Anda dapat mengklik tombol Jelaskan tombol di atas jendela kueri.
Anda juga dapat menggunakan SET SHOWPLAN_XML ON
untuk mengaktifkannya, dan SET SHOWPLAN_XML OFF
untuk menonaktifkannya.