Aracılığıyla paylaş


use plan sorgu ipucu kullanma

The USE PLAN query hint takes an xml_plan as an argument.xml_plan is a string literal derived from the XML-formatted query plan that is produced for the query.use plan sorgu ipucu tek başına bir sql deyim, sorgu ipucu olarak belirtilen veya belirtilen @ ipuçları parametresi bir plan kılavuzu üzerinde.Bir sorgu planı için bir plan kılavuz eklemek için kullanmanız önerilir xml_showplan parametresi sp_create_plan_guide veya sp_create_plan_guide_from_handle saklı yordam.

Önemli notÖnemli

Her zaman göstermek xml_plan gibi n n önekini belirterek değişmez bir Unicode olarak'xml_plan'.Bunu yapan herhangi bir karakteri Unicode standardı belirli planı ne zaman kayıp değil, emin SQL Server Veritabanı Altyapısı Yorumlar dize.

De SQL Server, xml biçimli sorgu planları üretilen aşağıdaki yollardan:

Üretme ve sorgu planları çözümleme hakkında daha fazla bilgi için bkz: Bir sorgu çözümleme.

Belirtilen xml biçimli sorgu planı xml_plan Showplanxml.xsd xsd şemaya göre doğrulamak gerekir, SQL Server yükleme dizini.Ayrıca, altında yol içeren <ShowPlanXML> <BatchSequence> <Batch> <Statements> öğeleri, aşağıdakilerden birini gerekir görünür:

  • Bir veya daha fazla <StmtSimple> öğeleri, tam olarak bir birini içeren bir <QueryPlan> eklendiyse.

  • Bir <StmtCursor> öğesi tam olarak biri olan <CursorPlan> eklendiyse.

  • Bir veya daha fazla <StmtSimple> öğeleri olmadan bir <QueryPlan> eklendiyse ve bir <StmtCursor> biri olan öğe <CursorPlan> eklendiyse.

Planı plan, kullanmak gibi birleştirmek Siparişler ve operatörleri, değiştirerek kullanarak kullanmak ve taramalar ve aramalarının ayarlanması önce değiştirebilirsiniz.Ancak, biçim planının hala Showplanxml.xsd eşleşmelidir.Değiştirilmiş bir plan zorlamak mümkün olmayabilir.Planı planları biri değil, bir plan içinde bir plan kullanın ipucu kullanırsanız bir hata oluşur, SQL Server genelde düşünün sorgu en iyi duruma getirilmesi sırasında

use plan sorgu ipucu ile oluşturulan sorgu planları yalnızca gibi diğer sorgu planları önbelleğe alınır.

use plan sorgu ipucu sınırlamaları

Bir sorgu planı kullanmak planı tarafından belirtilen dizinler bırakılıyor gibi veritabanı değişiklik koşullarına aykırı olabilir.Bir sorgu planı bırakılan nesne planında doğrudan başvurulan bile eski haline gelebilir.Örneğin, bir sorgu planı içinde benzersiz dizin açıkça başvurulan, ancak dizin yine de verilere göre bir benzersiz kısıtlamayı zorlar.KULLANMA planı tarafından başvurulan bir sorgu planı distinctness zorlamak için belirli işleçleri kullanmaktan kaçınmak için bu sınırlama kullanabilirsiniz.

Bazı durumlarda, bir hizmet paketi veya yeni bir sürüm yükleme SQL Server engelleyebilir, zorlama planı tarafından daha önceki bir sürüm.Bu nedenle, her sunucu yükseltilir kullanmak PLANLADIĞINIZ tüm ipuçlarını sınanacağı.

use planla ipucu sorgu kullanma tüm birleştirmek ipuçları ve aynı sorguda kullanılan dizin ipuçları geçersiz kılar.

use planla force order, GÖRÜNÜMLER genişletin, Grup, BİRLİĞİ veya birleştirme sorgu ipuçları ile veya küme forceplan on olarak ayarlandığında kullanılamaz.

Aksi halde sorgu iyileştiricisi'ın tipik arama stratejisi tarafından bulunan sorgu planları use plan kullanarak zorlayabilir.Bu planlar genellikle, her bir alt belirtmek birleştirmek yaprak düzey olması.Diğer sorgu türleri zorlamak use plan kullanarak bir hata neden olur.

Sorgu planı öğeleri Zorlanmış

Tüm öğeleri xml biçimli sorgu planı ile kullanım planı ipucu zorlanır.skaler ifadeleri hesaplamak öğeler dikkate alınmaz ve bu nedenle bazı ilişkisel deyimleridir.Sorgu planı aşağıdaki öğe türlerini zorlanır:

  • Ağaç yapısı ve değerlendirme sırasını planlayın.

  • birleştirmek türleri, sıralama ve sendikalar gibi yürütme algoritmaları.

  • Dizin işlemleri gibi tarar gibi yararlanılabileceğini, kesişmeler ve sendikalar.

  • Diğer tabloları, dizinleri ve işlevler gibi açıkça başvurulan nesneler.

Özellikle, SQL Server zorlar LogicalOp, PhysicalOp, ve NodeID altında bulunan öğelere <RelOp> öğesi ve ayrıca ilgili tüm alt <PhysicalOp> işleç.Diğer içerik altında <RelOp> olarak öğe değil kabul edilir göre kullanım planı.

Önemli notÖnemli

kardinalite tahminleri hakkında bilgi dikte tarafından <EstimateRows> öğesi zorlanmamış use plan sorgu ipucu.Çünkü sorgu iyileştiricisi kardinalite tahmini bir sorguyu çalıştırmanın ayırmak için bellek miktarını belirlemek için kullandığı doğru İstatistikler bile, use plan kullanırken korumak.Daha fazla bilgi için bkz: İstatistikler sorgu performansını artırmak için kullanma.

Aşağıdaki tablo use plan sorgu ipucu ile her ikisi için zorlanır ilişkisel işleç değerlerini listeler PhysicalOp ve LogicalOp maddeler ve her biri için gerekli olan alt PhysicalOp değer.Tablo stili XPath yollara göre alt öğesi formunda her işleç için gerekli olan ek bilgileri de içerir.

PhysicalOp

LogicalOp

Alt öğesi

Ek bilgi1

Concatenation

Concatenation

Async Concat

Concat

Uygulanabilir değil

Constant Scan

Constant Scan

ConstantScan

Uygulanabilir değil

Deleted Scan

Deleted Scan

DeletedScan

Object/@Table

UDX

UDX

Extension

@UDXName

Hash Match

Inner Join

Left Outer Join

Right Outer Join

Full Outer Join

Left Semi Join

Left Anti Semi Join

Right Semi Join

Right Anti Semi Join

Aggregate

Partial Aggregate

Flow Distinct

Union

Hash

Uygulanabilir değil

RID Lookup

RID Lookup

IndexScan

Object/@Database, Object/@Schema, Object/@Table

Index Scan

Clustered Index Scan

Index Scan

Clustered Index Scan

IndexScan

Object/@Database, Object/@Schema, Object/@Table Object/@Index

Index Seek

Clustered Index Seek

Index Seek

Clustered Index Seek

IndexScan

Object/@Database, Object/@Schema, Object/@Table Object/@Index

Inserted Scan

Inserted Scan

InsertedScan

Object/@Table

Log Row Scan

Log Row Scan

LogRowScan

Uygulanabilir değil

Merge Join

Inner Join

Left Outer Join

Right Outer Join

Full Outer Join

Left Semi Join

Left Anti Semi Join

Right Semi Join

Right Anti Semi Join

Cross Join

Concatenation

Union

Merge

Uygulanabilir değil

Merge Interval

Merge Interval

MergeInterval

Uygulanabilir değil

Nested Loops

Inner Join

Left Outer Join

Right Outer Join

Full Outer Join

Left Semi Join

Left Anti Semi Join

Right Semi Join

Right Anti Semi Join

Cross Join

NestedLoops

Uygulanabilir değil

Parallelism

Gather Streams

Repartition Streams

Distribute Streams

Parallelism

Uygulanabilir değil

Row Count Spool

Eager Spool

Lazy Spool

RowCountSpool2

Uygulanabilir değil

Segment

Segment

Segment

Uygulanabilir değil

Sequence

Sequence

Sequence

Uygulanabilir değil

Sequence Project

Compute Scalar

SequenceProject

Uygulanabilir değil

Sort

Sort

Distinct Sort

Sort

Uygulanabilir değil

Table Spool

Index Spool

Eager Spool

Lazy Spool

Spool2

@PrimaryNodeId (yalnızca ikincil biriktirir için)

../RelOp/@NodeId (yalnızca birincil biriktiricileri temsil eden RelOps için)

Stream Aggregate

Aggregate

StreamAggregate

Uygulanabilir değil

Switch

Switch

Switch

Uygulanabilir değil

Table Scan

Table Scan

TableScan

Object/@Database, Object/@Schema, Object/@Table

Table-valued function

Table-valued function

TableValuedFunction

Object/@Database, Object/@Schema, Object/@Table

(tablo değerli işlev adı Object/@Table'dır)

Top

Top

Top

Uygulanabilir değil

Sort

Sort

Sort

Uygulanabilir değil

Top Sort

TopN Sort

TopSort

Uygulanabilir değil

Table Insert

Insert

Update

Object/@Table

1 Sıra ve sayıda bu girişleri her ilişkisel işleç için gösterildiği gibi görünmesi gerekir tablo kullanım planı ile bir plan zorlamak için.

2 Plan içeriyorsa, bir plan zorlama yeteneği, sınırlı bir <RowCountSpool> eklendiyse, bu görünebilir, zorlanan bir plan olarak ya da bir <RowCountSpool> veya bir <biriktirme> eklendiyse.Benzer şekilde, planın içeriyorsa, bir <Biriktirme> eklendiyse, bu görünebilir zorunlu bir plan, bir <Biriktirme> veya <RowCountSpool> eklendiyse.

The Assert, Bitmap, ComputeScalar, and PrintDataFlow operators are ignored by USE PLAN.The Filter operator is considered by USE PLAN, but its exact location in the plan cannot be forced.

Sorgu planları içinde kullanılan fiziksel ve mantıksal işleçleri hakkında daha fazla bilgi için bkz: Fiziksel ve mantıksal işleçleri başvurusu.

İmleç desteği

You can use the USE PLAN query hint together with queries that specify static or fast-forward-only cursors, whether requested through Transact-SQL or an API cursor function.Transact-SQL static cursors with a forward-only option are supported.Dinamik, anahtar kümesi kullanımlı ve salt ileri imleçler desteklenir.

Daha fazla bilgi için bkz: use plan sorgu ipucu imleçler ile sorgular kullanma.

Ayrıca bkz.

Kavramlar

Diğer Kaynaklar