set showplan_text (Transact-sql)
Neden Microsoft SQL Serverdeğil çalıştırmak için Transact-SQLdeyimleri. Bunun yerine, SQL Serverdeyimleri nasıl yürütülür hakkında ayrıntılı bilgi verir ve tahminleri raporları için kaynak gereksinimleri sağlar.
Transact-SQL Sözdizim Kuralları
Sözdizimi
SET SHOWPLAN_ALL { ON | OFF }
Açıklamalar
set showplan_text ayarı ayarlanır yürütme veya zaman değil ayrıştırma saati ve çalıştırın.
set showplan_all on olduğunda SQL Server, yürütme olmadan her deyimi yürütme bilgilerini döndürür ve Transact-SQLdeyimleri yürütüldü. Sonra bu seçeneği on, bilgi sonraki tüm ayarlanır Transact-SQLkadar kapalı set seçenek deyimleri döndürülür Örneğin set showplan_all on iken bir create table deyimi yürütüldüğünde, SQL Serversonraki bir select deyimi belirtilen tablo yok kullanıcıları bilgilendirmek, aynı tablo içeren bir hata iletisi döndürür. Bu nedenle, bu tabloya sonraki başvurular başarısız. set showplan_xml off, ne zaman SQL Serverrapor oluşturmadan deyimleri yürütür.
set showplan_all çıktısı işlemek üzere yazılmış uygulamalar tarafından kullanılmak üzere tasarlanmıştır. set showplan_text, Microsoft Win32 komut istemi uygulamalar için okunabilir çıkış gibi kullanarak osqlyarar.
Saklı yordam içinde belirtilen set showplan_text ve set showplan_all; Toplu işlem yalnızca deyimlerinde olmaları gerekir.
set showplan_text bilgi tarafından alınan adımları temsil eden bir hiyerarşik ağaç formu bir satır kümesi döndürür SQL Serverher deyimi yürütür işlemci sorgulamak. Çıktıda yansıyan her deyimi yürütme adımları ayrıntılarıyla birkaç satır tarafından takip deyimi metin içeren tek bir satır içerir. Tablo sütunları çıkış içerdiğini gösterir.
Sütun adı |
Açıklama |
---|---|
StmtText |
plan_row tipinde olmayan satırlar için bu sütun metni içeren Transact-SQLdeyimi. plan_row türündeki satırlar için işlem açıklaması için bu sütun içerir. Bu sütun içeren fiziksel bir işleci ve isteğe bağlı olabilir ayrıca mantıksal işleç içerir. Bu sütun tarafından fiziksel bir işleci tarafından belirlenen bir açıklama da takip edilebilir. Daha fazla bilgi için, bkz. Showplan fiziksel ve mantıksal işleçleri başvurusu. |
StmtId |
Geçerli toplu deyiminde sayısı. |
NodeId |
Geçerli sorgudaki düğüm Kımlığı. |
Parent |
Ana adımı düğüm Kımlığı. |
PhysicalOp |
Düğüm için fiziksel uygulama algoritması. Tür plan_rows yalnızca satırlar için. |
LogicalOp |
İlişkisel cebir Operatör bu düğümü temsil eder. Tür plan_rows yalnızca satırlar için. |
Bağımsız değişken |
Gerçekleştirilen işlem hakkında ek bilgiler sağlar. Bu sütunun içeriğini fiziksel operatöre bağlıdır. |
DefinedValues |
Bu operatör tarafından tanıtılan değerleri virgülle ayrılmış bir listesini içerir. Bu değerler, geçerli sorgu (örneğin, seçme listesinde veya where yan tümcesi) veya iç değerleri, bu sorguyu işlemek için sorgu işlemcisi tarafından tanıtılan yoksa hesaplanmış ifade olabilir. Bunlar tanımlı değerler sonra başvurulan başka bir yerde bu sorgu içinde. Tür plan_rows yalnızca satırlar için. |
EstimateRows |
Bu operatör tarafından üretilen çıktı satır sayısı tahmini. Tür plan_rows yalnızca satırlar için. |
EstimateIO |
Tahmini I/O maliyet * Bu işleç. Tür plan_rows yalnızca satırlar için. |
EstimateCPU |
Tahmini cpu maliyet * Bu işleç. Tür plan_rows yalnızca satırlar için. |
AvgRowSize |
Bu işleç ile geçirilen satır ortalama satır boyutunu (bayt cinsinden) tahmini. |
TotalSubtreeCost |
Tahmini (kümülatif) maliyet * bu işlemi ve tüm alt işlemleri. |
OutputList |
Geçerli işlem tarafından öngörülen sütunları virgülle ayrılmış bir listesini içerir. |
Uyarılar |
Geçerli işlem için ilgili uyarı iletilerini, virgülle ayrılmış bir listesini içerir. Uyarı mesajları "Hayır stats:()" dizesini içerebilir sütunlar listesi ile. Bu uyarı iletisi, bu sütun istatistikleri temel alan bir karar vermek query optimizer denedi, ancak hiçbiri kullanılabilir anlamına gelir. Sonuç olarak, query optimizer verimsiz sorgu planı seçimi sonuçlandı bir tahmin yapmak zorunda. Oluşturma veya güncelleştirme (Bu daha verimli bir sorgu planı seçmek sorgu iyileştirici Yardım) sütun istatistikleri hakkında daha fazla bilgi için bkz: update STATISTICS. Bu sütun, isteğe bağlı olarak "Eksik birleştirme (tablolar içeren) birleştirme birleştirme yüklemi olmadan yer alıyor demektir YÜKLEMİ", dize içerebilir. Yanlışlıkla bir birleştirme yüklemi bırakarak çalıştırmak beklenenden çok daha uzun sürer ve çok büyük bir sonuç kümesi döndüren bir sorgu içinde sonuçlanabilir. Bu uyarı varsa, bir birleştirme yüklemi yokluğunda kasıtlı olduğunu doğrulayın. |
Tür |
Düğüm türü. Üst düğüm her sorgu için bu Transact-SQLdeyimi türü (örneğin, Seç, Ekle, execute ve benzerleri). Yürütme planları gösteren alt düğümler için plan_row türüdür. |
Paralel |
0 = İşleci paralel olarak çalışmıyor. 1 = İşleci paralel olarak çalışıyor. |
EstimateExecutions |
Tahmini sayısı geçerli sorguyu çalıştırırken Bu işleç yürütülür. |
* Maliyet birimi olmayan duvar saati saati saati dahili bir ölçüm üzerinde temel alır. Bunlar, bir plan başka planları karşılaştırıldığında göreli maliyetini belirlemek için kullanılır.
İzinler
set showplan_all kullanmak için set showplan_all yürütüldüğü deyimleri yürütmek için yeterli izinlere sahip ve başvurulan nesneleri içeren tüm veritabanları için showplan izninizin olması gerekir.
İçin select, INSERT, update, delete, exec stored_procedureve exec user_defined_functiondeyimleri kullanıcı gerekir Showplan üretmek için:
Çalıştırmak için uygun izinlere sahip Transact-SQLdeyimleri.
Tarafından başvurulan nesneleri içeren tüm veritabanları üzerinde showplan iznine sahip Transact-SQLtablolar, tablolar, görünümler ve benzeri gibi.
Tüm diğer gibi deyimleri ddl, kullanım için database_name, set, declare, dinamik sql ve benzerleri, yalnızca yürütmek için uygun izinleri Transact-SQLdeyimleri gerekiyor.
Örnekler
Izleyin iki deyim set showplan_xml ayarları biçimini göstermek için kullanın SQL Serverçözümler ve sorgularda dizinler kullanımını en iyi duruma getirir.
İlk sorgunun where yan tümcesi dizine alınmış sütun üzerinde eşittir (=) karşılaştırma işlecini kullanır. Kümelenmiş dizin ara değer sonuç LogicalOp sütun ve dizin adını bağımsız değişkeni sütun.
İkinci sorgunun where yan tümcesinde LIKE işlecini kullanır. Bu SQL Serverbir Kümelenmiş dizin tarama ve where yan tümcesi koşulu karşılayan verileri bulmak. Kümelenmiş dizin tarama değer sonuç LogicalOp sütun dizinde adını bağımsız değişkeni sütun ve filtre değeri LogicalOp where yan tümcesinde koşul sütunu bağımsız değişkeni sütun.
Değerleri EstimateRows ve TotalSubtreeCost sütunlar için çok daha hızlı işlenir ve dizinli sorgu daha az kaynak kullanır gösteren ilk dizinlenmiş sorgu daha küçük.
USE AdventureWorks2012;
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
USE AdventureWorks2012;
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.
Başvuru
Deyimiyle (Transact-sql) bırak