Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Microsoft SQL Server'ın Transact-SQL ifadelerini çalıştırmamasına neden olur. Bunun yerine, SQL Server ifadelerin nasıl yürütüleceğine dair ayrıntılı bilgi (bir sorgu planı) sağlar ve ifadeler ile beklenen satırlar için kaynak gereksinimlerinin tahminlerini sağlar (kardinalite tahmini).
Transact-SQL söz dizimi kuralları
Sözdizimi
SET SHOWPLAN_ALL { ON | OFF }
Açıklamalar
SET SHOWPLAN_ALL ayarı işleme veya çalışma zamanında ayarlanır, ayrıştırma zamanında değil.
ON'da, SET SHOWPLAN_ALL SQL Server her ifade için çalıştırma bilgisini döndürür ve Transact-SQL ifadeler çalıştırılmaz. Bu seçenek ONON'a ayarlandıktan sonra, sonraki tüm Transact-SQL ifadeleriyle ilgili bilgiler geri dönüyor ve seçenek KAPANANA kadar geri dönüyor. Örneğin, bir CREATE TABLE ifadesi ONURKEN SET SHOWPLAN_ALL çalıştırılırsa, SQL Server aynı tabloyu içeren sonraki SELECT ifadesinden bir hata mesajı döndürür ve kullanıcılara belirtilen tablonun olmadığını bildirir. Bu nedenle, bu tabloya yapılan sonraki başvurular başarısız olur. SET SHOWPLAN_ALL KAPALı olduğunda, SQL Server bu ifadeleri rapor oluşturmadan çalıştırır.
SET SHOWPLAN_ALL çıktısını işlemek için yazılmış uygulamalar tarafından kullanılmak üzere tasarlanmıştır. Microsoft Win32 komut mesajı uygulamaları için okunabilir çıktı döndürmek için SET SHOWPLAN_TEXT kullanın; örneğin osql aracı.
SET SHOWPLAN_TEXT ve SET SHOWPLAN_ALL bir depolanmış prosedür içinde belirtilemez; Bir grupta tek ifadeler olmalı.
SET SHOWPLAN_ALL bilgiyi, SQL Server sorgu işlemcisinin her ifadeyi çalıştırırken attığı adımları temsil eden bir hiyerarşik ağaç oluşturan bir sıra kümesi olarak döndürür. Çıktıda yansıtılan her ifade, ifadenin metnini içeren tek bir satır ve ardından yürütme adımlarının detaylarını içeren birkaç satır içerir. Tablo, çıktının içerdiği sütunları gösterir.
| Sütun adı | Description |
|---|---|
| StmtText | PLAN_ROW tipine ait olmayan satırlar için, bu sütun Transact-SQL ilanının metnini içerir. PLAN_ROW tipindeki satırlar için, bu sütun işlemin tanımını içerir. Bu sütun fiziksel operatörü içerir ve isteğe bağlı olarak mantıksal operatörü de içerebilir. Bu sütunun ardından fiziksel operatör tarafından belirlenen bir açıklama da gelebilir. Daha fazla bilgi için Showplan Mantıksal ve Fiziksel Operatörler Referansı'na bakınız. |
| StmtId | Mevcut partideki ifade numarası. |
| NodeId | Mevcut sorgudaki düğümün kimliği. |
| Ebeveyn | Ebeveyn adımın düğüm kimliği. |
| FizikselOp | Düğüm için fiziksel uygulama algoritması. Sadece PLAN_ROWS tipi satırlar için. |
| LogicalOp | Bu düğümün temsil ettiği ilişkisel cebirsel operatör. Sadece PLAN_ROWS tipi satırlar için. |
| Argüman | Yapılan operasyon hakkında ek bilgi sağlar. Bu sütunun içeriği fiziksel operatöre bağlıdır. |
| DefinedValues | Bu operatör tarafından sunulan virgülle ayrılmış bir değer listesini içerir. Bu değerler, mevcut sorguda bulunan hesaplanan ifadeler (örneğin, SELECT listesi veya WHERE maddesinde) veya sorgu işlemcisi tarafından bu sorguyu işlemek için getirilen dahili değerler olabilir. Bu tanımlanmış değerler daha sonra bu sorgu içinde başka yerlerde referans verilebilir. Sadece PLAN_ROWS tipi satırlar için. |
| Tahmin Sıraları | Bu operatör tarafından üretilen tahmini çıkış satırı sayısı. Sadece PLAN_ROWS tipi satırlar için. |
| EstimateIO | Bu operatör için tahmini G/O maliyeti*. Sadece PLAN_ROWS tipi satırlar için. |
| TahminCPU | Bu operatör için tahmini CPU maliyeti*. Sadece PLAN_ROWS tipi satırlar için. |
| AvgRowSize | Bu operatörden geçen sıranın tahmini ortalama satır boyutu (bayt cinsinden). |
| TotalSubtreeCost | Bu operasyonun ve tüm çocuk operasyonlarının tahmini (kümülatif) maliyeti*. |
| Çıktı Listesi | Mevcut işlem tarafından projeksiyon edilen sütunların virgülle ayrılmış bir listesini içerir. |
| Warnings | Mevcut işlemle ilgili virgülle ayrılmış uyarı mesajları listesini içerir. Uyarı mesajları arasında "NO STATS:()" dizisi ve sütun listesi bulunabilir. Bu uyarı mesajı, sorgu optimizatorunun bu sütunun istatistiklerine dayanarak karar vermeye çalıştığını, ancak hiçbir karar bulunamadığını ifade ediyor. Sonuç olarak, sorgu optimizatoru bir tahmin yapmak zorunda kaldı ve bu da verimsiz bir sorgu planının seçilmesine yol açmış olabilir. Sorgu optimizatorunun daha verimli bir sorgu planı seçmesine yardımcı olan sütun istatistikleri oluşturma veya güncelleme hakkında daha fazla bilgi için bkz. GÜNCELLEME İSTATÎSTÎKLERİ. Bu sütun, isteğe bağlı olarak "MISSING JOIN PREDICATE" dizesini içerebilir; bu, bir birleşimin (tabloları içeren) bir join önlemi olmadan gerçekleştiği anlamına gelir. Bir join predicate'i yanlışlıkla düşürmek, beklenenden çok daha uzun süren bir sorguya yol açabilir ve büyük bir sonuç seti döndürebilir. Bu uyarı varsa, birleşik predikatının olmamasının kasıtlı olduğunu doğrulayın. |
| Type | Düğüm türü. Her sorgunun ana düğümü için bu Transact-SQL ifade tipidir (örneğin, SELECT, INSERT, EXECUTE ve benzeri). Yürütme planlarını temsil eden alt düğümler için tip PLAN_ROW. |
| Koşut |
0 = Operatör paralel çalışmaz. 1 = Operatör paralel çalışıyor. |
| Tahmin Uygulamalar | Bu operatörün mevcut sorgu çalıştırılırken kaç kez çalıştırılacağı tahmini sayısı. |
*Maliyet birimleri, duvar saati yerine iç ölçüm zamanına dayanır. Bir planın diğer planlarla karşılaştırıldığında göreceli maliyetini belirlemek için kullanılırlar.
Permissions
SET SHOWPLAN_ALL'yi kullanabilmek için, SET SHOWPLAN_ALL'nin yürütüldiği ifadeleri çalıştırmak için yeterli iznlere sahip olmanız ve referans nesneleri içeren tüm veritabanları için SHOWPLAN iznine sahip olmanız gerekir.
SELECT, INSERT, UPDATE, DELETE , EXEC stored_procedure ve EXEC user_defined_function ibelemleri için, bir Showplan oluşturmak için kullanıcı şunları yapmalıdır:
Transact-SQL deyimlerini yürütmek için uygun izinlere sahip olun.
tablolar, görünümler vb. Transact-SQL deyimleri tarafından başvurulan nesneleri içeren tüm veritabanlarında SHOWPLAN iznine sahip olun.
DDL, USE database_name, SET, DECLARE, dinamik SQL gibi diğer tüm ifadeler için, Transact-SQL ifadelerini çalıştırmak için yalnızca uygun izinler gereklidir.
Örnekler
Takip eden iki cümle, SQL Server'ın sorgularda indeks kullanımını nasıl analiz ettiğini ve optimize ettiğini göstermek için SET SHOWPLAN_ALL ayarlarını kullanır.
İlk sorgu, indekslenmiş bir sütundaki WHERE maddesindeki Equals karşılaştırma operatörünü (=) kullanır. Bu, LogicalOp sütununda Kümelenmiş İndeks Arama değerinin ve Argüman sütununda indeksin adının ortaya çıkmasına yol açar.
İkinci sorgu WHERE yan tümcesinde LIKE işlecini kullanır. Bu durum, SQL Server'ı kümelenmiş bir indeks taraması kullanıp WHERE cümlesi koşulu sağlayan verileri bulmaya zorlar. Bu, LogicalOp sütununda Argument sütununda indeksin adı ile Clustered Index Scan değerinin ve LogicalOp sütununda Filtre değerinin Argument sütununda WHERE cümlesi koşulu ile ortaya çıkmasına yol açar.
EstimateRows ve TotalSubtreeCost sütunlarındaki değerler, ilk indekslenen sorgu için daha küçüktür, bu da sorgunun çok daha hızlı işlendiğini ve indekslenmemiş sorguya göre daha az kaynak kullandığını gösterir.
USE AdventureWorks2022;
GO
SET SHOWPLAN_ALL ON;
GO
-- First query.
SELECT BusinessEntityID
FROM HumanResources.Employee
WHERE NationalIDNumber = '509647174';
GO
-- Second query.
SELECT BusinessEntityID, EmergencyContactID
FROM HumanResources.Employee
WHERE EmergencyContactID LIKE '1%';
GO
SET SHOWPLAN_ALL OFF;
GO
Ayrıca Bkz.
SET Deyimleri (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)
SET SHOWPLAN_XML (Transact-SQL)