Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server SHOWPLAN_TEXT

Di SQL Server, Anda dapat menggunakan SET SHOWPLAN_TEXT pernyataan untuk mengembalikan informasi rinci tentang bagaimana pernyataan T-SQL dijalankan.

SHOWPLAN_TEXT 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_ALL , kecuali bahwa ia mengembalikan lebih sedikit detail. Oleh karena itu, ini ditujukan untuk aplikasi yang tidak dapat menangani detail tambahan yang SHOWPLAN_ALL menyediakan.

Anda dapat mengatur SHOWPLAN_TEXT ke salah satu ON atau OFF .

Saat SHOWPLAN_TEXT 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_TEXT ON;
GO

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
GO

Perhatikan bahwa SET SHOWPLAN_TEXT 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):

Commands completed successfully.
+------------+
| StmtText   |
|------------|
| 
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;            |
+------------+
(1 row affected)
+--------------------------------------------------------------------------------------------------------------------------------------+
| StmtText                                                                                                                             |
|--------------------------------------------------------------------------------------------------------------------------------------|
|   |--Hash Match(Inner Join, HASH:([d].[DogName])=([Expr1003]), RESIDUAL:([Expr1003]=[Test].[dbo].[Dogs].[DogName] as [d].[DogName])) |
|        |--Table Scan(OBJECT:([Test].[dbo].[Dogs] AS [d]))                                                                            |
|        |--Compute Scalar(DEFINE:([Expr1003]=CONVERT_IMPLICIT(nvarchar(255),[Test].[dbo].[Cats].[CatName] as [c].[CatName],0)))       |
|             |--Clustered Index Scan(OBJECT:([Test].[dbo].[Cats].[PK__Cats__6A1C8AFAB3EF1A8F] AS [c]))                                |
+--------------------------------------------------------------------------------------------------------------------------------------+
(4 rows affected)
Commands completed successfully.

Cara Mematikannya

Anda dapat mematikannya dengan menggunakan SET SHOWPLAN_TEXT OFF .

Setelah Anda melakukannya, pernyataan berikutnya akan dijalankan seperti biasa.

SET SHOWPLAN_TEXT 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.

Usang atau Tidak?

Menurut artikel MSDN lama ini, SET SHOWPLAN_TEXT 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memasukkan Data SQL Server ke Salesforce dengan Kursor

  2. Bagaimana cara memperbaiki konflik pemeriksaan dalam kueri SQL Server?

  3. Php memanggil skrip database cadangan sqlserver, file cadangan dibuat dan kemudian dihapus

  4. Konversi 'datetime2' menjadi 'datetimeoffset' di SQL Server (Contoh T-SQL)

  5. Menggunakan DMV ( Tampilan Manajemen Dinamis ) dan DMF ( Fungsi Manajemen Dinamis ) | Pemecahan Masalah Kinerja SQL Server -4