Odkaz na logický a fyzický operátor showplan

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Operátory popisují, jak Databázový stroj systému SQL Server spouští dotaz. Optimalizátor dotazů používá operátory k vytvoření plánu dotazu k vytvoření výsledku nebo provedení operace zadané v dotazu. Plán dotazu je strom skládající se z fyzických operátorů. Operátor nalevo je kořen, který řídí celkový výkon. V případě příkazu SELECT kořen obvykle vrací sadu výsledků klientovi. V případě příkazů pro úpravy dat (INSERT, UPDATE, DELETE, MERGE) nebo příkazů jako SELECT...INTO řídí úpravy kořen a nemusí vracet řádky. Operátory bez vstupů, úplně vpravo od stromu, jsou uzly typu list, které obvykle čtou data z úložiště. Zprostředkující operátory transformují, filtrují nebo spojují data při jejich toku zprava doleva přes plán.

Plán dotazu můžete zobrazit pomocí příkazů SET SHOWPLAN, možností grafického plánu provedení v aplikaci SQL Server Management Studio nebo událostí showplan v rámci rozšířených událostí.

Typy operátorů

Operátory jsou klasifikovány jako logické a fyzické operátory.

Logické operátory

Logické operátory popisují relační algebraickou operaci použitou ke zpracování dotazu. Jinými slovy logické operátory popisují koncepčně to, co je potřeba provést.

Fyzické operátory

Fyzické operátory implementují operaci popsanou logickými operátory. Každý fyzický operátor je objekt nebo rutina, která provádí operaci. Některé fyzické operátory například přistupují ke sloupcům nebo řádkům v tabulce, indexu nebo zobrazení. Jiné fyzické operátory provádějí operace, jako jsou výpočty, agregace, kontroly integrity dat nebo spojení. Fyzické operátory mají spojené náklady.

Fyzické operátory inicializují, shromažďují data a ukončují. Fyzický operátor může odpovědět na následující tři volání metod:

  • Open(): Metoda Open() způsobí, že se fyzický operátor inicializuje a nastaví všechny požadované datové struktury. I když fyzický operátor může přijímat mnoho Open() volání, obvykle přijímá pouze jeden.

  • GetRow(): Metoda GetRow() způsobí, že fyzický operátor získá první nebo následující řádek dat. Fyzický operátor může přijímat žádné nebo mnoho volání GetRow().

  • Close(): Metoda Close() způsobí, že fyzický operátor provede některé operace čištění a sám se vypne. Fyzický operátor přijímá pouze jedno Close() volání, ale volání Close() není vždy zaručeno.

Metoda GetRow() vrátí jeden řádek dat a počet, kolikrát je volána, se zobrazí jako ActualRows ve výstupu showplan generovaném grafickým a XML zobrazením. Další informace o těchto SET možnostech naleznete SET STATISTICS PROFILE a SET STATISTICS XML.

Elementy jazyka

Některé operátory v plánu dotazu představují prvky jazyka Transact-SQL místo relačních operací. Patří mezi ně konstrukce, jako je přiřazení proměnné, převod typů a tok řízení (IF/WHILE). Prvky jazyka nejsou klasifikovány jako logické ani fyzické operátory.

Přemapování, převíjení a konec skenování

Ve výstupu showplanu se zobrazují následující čítače, které pomáhají pochopit, jak často se operátor znovu spouští.

ActualRebinds a ActualRewinds počty zobrazené ve výstupu showplan odkazují na počet, kolikrát je volána metoda Open(). Není-li operátor na vnitřní straně spojení vnořených smyček, pak hodnota ActualRebinds se rovná jedné a hodnota ActualRewinds se rovná nule. Pokud je operátor na vnitřní straně smyčkového spojení, celkový počet opětovných navázání a převinutí by se měl rovnat počtu řádků zpracovaných na vnější straně spojení. Změna vazby znamená, že se změnil jeden nebo více korelovaných parametrů spojení a vnitřní strana se musí znovu vyhodnotit. Převinutí zpět znamená, že se nezměnil žádný z korelovaných parametrů a předchozí vnitřní sada výsledků by se mohla znovu použít.

ActualRebinds a ActualRewinds jsou k dispozici ve výstupu showplanu XML vytvořeném pomocí SET STATISTICS XML ON a grafického showplanu. Vyplní se pro operátory, jako je indexový fond, vzdálený dotaz, fond počtu řádků, řazení, fond tabulek a funkce s hodnotou tabulky. ActualRebinds a ActualRewinds mohou být také zpracovávány pro operátory jako Assert a Filter, když je atribut StartupExpression nastaven na TRUE.

Pokud ActualRebinds a ActualRewinds jsou k dispozici v showplanu XML, jsou srovnatelné s EstimateRebinds a EstimateRewinds. Pokud chybí, odhadovaný počet řádků (EstimateRows ) je srovnatelný se skutečným počtem řádků (ActualRows). Skutečný grafický výstup Showplanu zobrazuje nuly pro skutečná přepojení a převíjení, pokud nejsou přítomny.

Související čítač, ActualEndOfScans, je k dispozici v XML a grafickém výkresu provádění. Kdykoli fyzický operátor dosáhne konce datového streamu, tento čítač se zvýší o jeden. Fyzický operátor může dosáhnout konce datového proudu nula, jednoho nebo vícekrát. Stejně jako u převazování a převíjení může být počet skenování více než jeden, jen pokud je operátor na vnitřní straně smyčkového spojení. Počet skenů by měl být menší nebo roven součtu počtu převázání a převinutí.

Jak optimalizátor dotazů mapuje logické a fyzické operátory

Optimalizátor dotazů vytvoří plán dotazu jako strom skládající se z logických operátorů. Jakmile optimalizátor dotazů vytvoří plán, zvolí pro každý logický operátor fyzický operátor. Optimalizátor dotazů používá přístup založený na nákladech k určení, který fyzický operátor implementuje logický operátor.

Logickou operaci obvykle může implementovat více fyzických operátorů. Ve výjimečných případech ale může fyzický operátor implementovat i několik logických operací.

Provádění dávkového režimu

Spouštění dávkového režimu je metoda zpracování dotazů, která se používá ke zpracování více řádků společně (tedy termín dávkové zpracování) místo zpracování jedné řádky najednou. Zpracování dávkového režimu používá algoritmy optimalizované pro procesory s více jádry a zvýšenou propustnost paměti na moderním hardwaru. Dávkový režim může používat sada operátorů pro objekty rowstore i columnstore. Další informace naleznete v tématu Průvodce architekturou zpracování dotazů.

Čtení plánu provádění

V grafickém plánu provádění ukazují šipky zprava doleva, které představují tok dat. Během spuštění to funguje v opačném směru: operátory jsou na bázi dotazování a pracují pouze na vyžádání dat.

Kořenový operátor použije GetRow() na svůj podřízený prvek, který pak volá své vlastní podřízené prvky, dokud uzel listu nepřečte řádek z úložiště a nevrátí ho výše po řetězci. Kontrola clusterovaného indexu pod operátorem Top například neskenuje celou tabulku. Sken se zastaví, jakmile Top má dostatek řádků. V dávkovém režimu vrátí každé volání dávku řádků místo jednoho řádku. Oba směry čtení jsou užitečné: zprava doleva ukazuje, jaká data zadávají jednotlivé operátory, zatímco zleva doprava ukazuje, který operátor řídí práci.

Popisy operátorů

Tato část obsahuje popisy logických a fyzických operátorů. Vlastnosti plánů dotazů a operátorů můžete zobrazit pomocí podokna Vlastnosti v zobrazení Plán dotazu aplikace SQL Server Management Studio (SSMS).

Rada (if context is advice/suggestion)

Pokaždé, když má daná ikona grafického plánu provádění žlutý kruh se dvěma šipkami zprava doleva, znamená to, že operátor běžel paralelně. Další informace o paralelismu naleznete v Průvodce architekturou vláken a úloh.

Ikona Operátor Showplan Popis
Adaptivní spojení Operátor Adaptive Join umožňuje odložit volbu metody spojení pomocí hash nebo vnořených smyček až do chvíle, kdy bude proveden sken prvního vstupu.

Adaptivní Spojení je fyzický operátor. Další informace najdete v tématu Principy adaptivních spojení.
agregační Operátor Aggregate vypočítá výrazy obsahující jednu nebo více agregačních funkcí.

Agregace je logický operátor. Dá se implementovat pomocí operátoru Stream Aggregate, Hash Match, Window Aggregate nebo UserDefinedAggregate (CLR).
Aritmetický výraz Operátor Aritmetic Expression vypočítá novou hodnotu z existujících hodnot v řádku. Aritmetické výrazy se v novějších verzích SQL Serveru nepoužívají.
Assert Operátor Assert ověřuje podmínku. Například ověří referenční integritu nebo zajistí, že skalární poddotaz vrátí jeden řádek. Pro každý vstupní řádek vyhodnotí operátor Assert výraz v podokně Vlastnosti plánu provádění. Pokud se tento výraz vyhodnotí jako NULL, předá se řádek operátorem Assert a provádění dotazu pokračuje. Pokud se tento výraz vyhodnotí jako nenulová hodnota, vyvolá se příslušná chyba.

Assert je fyzický operátor.
Přiřadit Operátor Assign přiřadí hodnotu výrazu nebo konstanty proměnné.

Assign je prvek jazyka.
Žádný asynchronní spojení Operátor Async Concat se používá pouze ve vzdálených dotazech (distribuovaných dotazech). Má n podřízených položek a jeden nadřazený uzel. Obvykle jsou některé z těchto podřízených dětí vzdálené počítače, které se účastní distribuovaného dotazu. Async Concat problémy Open() vydává volání všem podřízeným objektům současně a poté aplikuje rastrový obrázek na každý podřízený objekt. Pro každý bit, který je 1, asynchronní concat odešle výstupní řádky do nadřazeného uzlu na vyžádání.

Async Concat je fyzický operátor.
Sestavení dávkové hashovací tabulky Operátor Batch Hash Table Build sestaví dávkovou hashovací tabulku pro columnstore index optimalizovaný pro paměť.

Platí pro: pouze SQL Server 2012 (11.x).
bitmapové SQL Server používá operátor Bitmap k implementaci filtrování rastrových obrázků v plánech paralelních dotazů. Rastrové filtrování zrychluje zpracování dotazů odstraněním řádků s klíčovými hodnotami, které před předáním řádků jiným operátorem, například operátorem Paralelismu , nemohou vytvořit žádné záznamy spojení. Rastrový filtr používá kompaktní reprezentaci sady hodnot z tabulky v jedné části stromu operátora k filtrování řádků z druhé tabulky v jiné části stromu. Odebráním nepotřebných řádků v rané fázi dotazu mají následné operátory méně řádků, se kterými se pracuje, a celkový výkon dotazu se zlepšuje. Optimalizátor určuje, kdy je rastrový obrázek dostatečně selektivní, aby byl užitečný a ve kterých operátorech se má filtr použít.

Bitmap je fyzický operátor.
Bitová mapa vytvořit Operátor Bitmap Create se zobrazí ve výstupu showplan, kde jsou vytvořeny rastrové obrázky.

Bitmap Create je logický operátor.
Žádný Přerozdělení větví V plánu paralelního dotazu někdy existují koncepční oblasti iterátorů. Všechny iterátory v této oblasti se můžou spouštět na paralelních vláknech. Samotné oblasti musí pracovat sériově. Některé z iterátorů paralelismu v rámci jednotlivých regionů se nazývají větvení přerozdělení. Paralelismus iterátor na hranici dvou takových oblastí se nazývá Segment Repartition.

Rozdělení větve a Rozdělení segmentů jsou logické operátory.
vysílání Vysílání má jeden podřízený uzel a n nadřazených uzlů. Broadcast posílá vstupní řádky více příjemcům dle potřeby. Každý spotřebitel obdrží všechny řádky. Pokud jsou například všichni příjemci stranami sestavení hash join, potom je sestaveno n kopií hash tabulek.

Broadcast je logický operátor.
Smazání clusterovaného indexu Operátor Clustered Index Delete odstraní řádky z clusterovaného indexu určeného ve vlastnosti Objekt, kterou naleznete v podokně Vlastnosti v grafických a XML showplánech. Pokud je k dispozici vlastnost SeekPredicates nebo Predikát , jsou odstraněny pouze řádky, které splňují predikát.

Poznámka: Vlastnost Object může obsahovat další neclusterované indexy, které operátor upravuje současně s clusterovaným indexem.

Odstranění clusterovaného indexu je fyzický operátor.
Vložení clusterovaného indexu Operátor Clustered Index Insert vloží řádky ze vstupu do clusterovaného indexu zadaného ve vlastnosti Objekt uvedené v panelu Vlastnosti v grafických a XML plánech zobrazení. Xml showplan zahrnuje SetPredicate a ColumnReference vlastnosti, které lze použít k určení hodnoty, na kterou je každý sloupec nastaven. Pokud vložení clusterovaného indexu nemá žádné podřízené položky pro vložení hodnot, řádek vložený je převzat z operátoru Insert samotného.

Poznámka: Vlastnost Object může obsahovat další neclusterované indexy, které operátor upravuje současně s clusterovaným indexem.

Vložení clusterovaného indexu je fyzický operátor.
Sloučení clusterovaného indexu Operátor Clustered Index Merge aplikuje sloučený datový proud na clusterovaný index. Operátor odstraní, aktualizuje nebo vloží řádky z clusterovaného indexu specifikovaném ve vlastnosti objektu uvedené v podokně Vlastnosti v grafickém a XML plánech zobrazení. Skutečná operace závisí na hodnotě za běhu vlastnosti ActionColumn.

Poznámka: Vlastnost Object může obsahovat další neclusterované indexy, které operátor upravuje současně s clusterovaným indexem.

Clusterované spojení indexů je fyzický operátor.
Prohledání clusterovaného indexu Operátor Clustered Index Scan prohledá clusterovaný index určený ve vlastnosti Objekt, který je uveden v panelu Vlastnosti v grafických a XML plánech zobrazení. Pokud je přítomna volitelná predikát vlastnost, vrátí se pouze řádky, které splňují predikát. Pokud je vlastnost Ordered v podokně Vlastnosti nebo XML showplanu True, procesor dotazu určil, že řádky musejí být vráceny v pořadí, ve kterém je seřadil clusterovaný index. Pokud je vlastnost OrderedFalse, Database Engine prohledá index bez záruky pořadí výstupu. Vlastnost SeekPredicates je k dispozici pouze pro dělený clusterovaný index.

clusterované prohledávání indexů je logický a fyzický operátor.
clusterovaného indexu – hledání Operátor Clustered Index Seek používá schopnost indexů načítat řádky z clusterovaného indexu. Vlastnost Objekt, uvedená v podokně Vlastnosti grafických a XML plánů zobrazení, obsahuje název použití clusterovaného indexu. Vlastnost SeekPredicates obsahuje predikát pro hledání. Database Engine používá index ke zpracování pouze ty řádky, které vyhovují SeekPredicates vlastnost. Může také zahrnovat vlastnost Predicate, kterou Databázový stroj vyhodnocuje pro všechny řádky, které splňují vlastnost SeekPredicates, ale to je volitelné a k dokončení tohoto procesu nepoužívá indexy. Vlastnost Ordered je obvykle true pro tento operátor.

Clustered Index Seek je logický a fyzický operátor.
Aktualizace seskupeného indexu Operátor Clustered Index Update aktualizuje vstupní řádky v clusterovaném indexu zadaném ve vlastnosti Objekt, jak je uvedeno v podokně Vlastnosti grafického a XML showplanu. Pokud je k dispozici predikát vlastnost, aktualizují se pouze řádky, které splňují tento predikát. Pokud je k dispozici vlastnost SetPredicate, nastaví se každý aktualizovaný sloupec na tuto hodnotu. Pokud je definována vlastnost DefinedValues , jsou uvedeny hodnoty, které tento operátor definuje. Tyto hodnoty mohou být odkazovány v klauzuli SET nebo jinde v tomto operátoru a jinde v tomto dotazu.

Poznámka: Vlastnost Object může obsahovat další neclusterované indexy, které operátor upravuje současně s clusterovaným indexem.

clusterovaná aktualizace indexu je logický a fyzický operátor.
Sbalit Operátor Collapse optimalizuje zpracování aktualizací. Při provedení aktualizace je možné ji rozdělit (pomocí operátoru Split) na odstranění a vložení. Podokno Vlastnosti obsahuje vlastnost GroupBy , která určuje seznam klíčových sloupců. Pokud procesor dotazů narazí na sousední řádky, které odstraní a vloží stejné hodnoty klíčů, nahradí tyto samostatné operace jedinou efektivnější operací aktualizace.

Collapse je logický a fyzický operátor.
odstranění indexu columnstore Columnstore Index Delete operátor znamená odstranění řádků z columnstore indexu zadaného ve vlastnosti objektu , uvedené v podokně Vlastnosti grafických a XML plánů. K odstranění dochází prostřednictvím operátoru Clustered Index Delete pro shlukovaný index columnstore a prostřednictvím operátoru Index Delete pro neshlukovaný index columnstore. Typ indexu (Clustered, NonClustered, ViewClustered nebo ViewNonClustered) je zadán ve vlastnosti IndexKind v showplan XML. Vlastnost SeekPredicates není podporována pro odstranění indexu Columnstore. Řádky, které se mají odstranit, se čtou z podřízeného operátoru.

odstranění indexu Columnstore je fyzický operátor.
vložení indexu Columnstore Operátor Columnstore Index Insert představuje vložení řádků ze vstupu do indexu columnstore zadaného ve vlastnosti Objektu, který je uvedeného v podokně Vlastnosti grafických a XML showplanů. Vložení probíhá prostřednictvím operátoru Clustered Index Insert pro clusterovaný index columnstore a prostřednictvím operátoru Index Insert pro neclusterovaný index columnstore. Typ indexu (Clustered, NonClustered, ViewClustered nebo ViewNonClustered) je zadán ve vlastnosti IndexKind v showplan XML. Xml showplan zahrnuje SetPredicate a ColumnReference vlastnosti, které lze použít k určení hodnoty, na kterou je každý sloupec nastaven.

Columnstore Index Insert je fyzický operátor.
Sloučení columnstore indexů Sloučení indexů columnstore představuje aplikaci slučovacího datového proudu pomocí operátoru Clustered Index Merge. Operátor odstraní, aktualizuje nebo vloží řádky z clusterovaného columnstore indexu zadaného ve vlastnosti Objekt uvedené v podokně Vlastnosti grafických a XML showplanů. Typ indexu (Clustered, NonClustered, ViewClustered nebo ViewNonClustered) je zadán ve vlastnosti IndexKind v showplan XML. Skutečná operace závisí na hodnotě za běhu vlastnosti ActionColumn.

sloučení indexů columnstore je fyzický operátor.
skenování indexu columnstore Operátor Columnstore Index Scan představuje prohledávání indexu columnstore zadaného ve vlastnosti Objekt, které je uvedeno v podokně Vlastnosti v grafických a XML showplanech. Skenování probíhá prostřednictvím operace Prohledávání clusterovaného indexu pro clusterovaný columnstore index a prostřednictvím operátoru Prohledávání indexu pro neclusterovaný columnstore index. Typ indexu (Clustered, NonClustered, ViewClustered nebo ViewNonClustered) je zadán ve vlastnosti IndexKind v showplan XML. Pokud je přítomna volitelná predikát vlastnost, vrátí se pouze řádky, které splňují predikát. Vlastnost SeekPredicates je k dispozici pouze pro partitionovaný columnstore index a pouze pro podmínky rovnosti nebo nerovnosti. Pokud je dělený sloupec v predikátu dotazu, odstranění oddílů a odstranění skupiny řádků může snížit počet skupin řádků, které se mají zkontrolovat.

Columnstore Index Scan je fyzický operátor.
aktualizace indexu columnstore Operátor Columnstore Index Update představuje aktualizaci jednoho nebo více řádků v indexu columnstore zadaném ve vlastnosti Objekt uvedeném v podokně Vlastnosti grafických a XML showplanů. K aktualizacím dochází prostřednictvím operátoru Clustered Index Update pro clusterovaný index columnstore a prostřednictvím operátoru Index Update pro neclusterovaný index columnstore. Typ indexu (Clustered, NonClustered, ViewClustered nebo ViewNonClustered) je zadán ve vlastnosti IndexKind v showplan XML. Vlastnost SeekPredicates není podporována pro aktualizaci indexu Columnstore. Řádky, které mají být aktualizovány, se načítají od podřízeného operátoru. Pokud je k dispozici vlastnost SetPredicate, nastaví se každý aktualizovaný sloupec na tuto hodnotu. Pokud je definována vlastnost DefinedValues , jsou uvedeny hodnoty, které tento operátor definuje. Tyto hodnoty mohou být odkazovány v klauzuli SET nebo jinde v tomto operátoru a jinde v tomto dotazu.

Columnstore index update je fyzický operátor.
Skalární výpočet Operátor Výpočetní skalární vyhodnotí výraz, aby vytvořil vypočítanou skalární hodnotu. To se pak může vrátit uživateli, nebo být odkazováno jinde v dotazu, případně obojí. Příkladem obojího je predikát filtru nebo predikát spojení.

Compute Scalar operátory, které se zobrazují ve showplánech vygenerovaných SET STATISTICS XML, nemusí obsahovat prvek RunTimeInformation. V grafických plánech zobrazení mohou skutečné počty řádků, skutečné vazbya skutečné převinutí chybět v okně Vlastnosti, pokud je v aplikaci SQL Server Management Studio vybrána možnost Zahrnout skutečný plán provádění. Pokud k tomu dojde, znamená to, že i když se tyto operátory používaly v zkompilovaném plánu dotazu, jejich práce prováděly jiné operátory v plánu dotazu modulu runtime. Počet spuštění ve výstupu showplan generovaném SET STATISTICS PROFILE je roven součtu rebindů a převinutí zpět v plánech showplan generovaných SET STATISTICS XML.

Compute Scalar je logický a fyzický operátor.
zřetězení Operátor zřetězení prohledá více vstupů a vrátí jednotlivé řádky skenované. zřetězení se obvykle používá k implementaci konstruktu Transact-SQL UNION ALL. Fyzický operátor zřetězení má dva nebo více vstupů a jeden výstup. Zřetězení kopíruje řádky z prvního vstupního datového proudu do výstupního datového proudu a pak tuto operaci opakuje pro každý další vstupní datový proud.

Zřetězení je logický a fyzický operátor.
Podmíněné (Když a Zatímco) Operátor podmíněného provádí podmíněné zpracování na základě smyčky nebo . Pokud a Zatímco jsou prvky jazyka.
konstantní skenování Operátor pro konstantní prohledávání přidává do dotazu jeden nebo více řádků s konstantní hodnotou. Operátor Compute Scalar se často používá po operátoru Constant Scan k přidání sloupců do řádku vytvořeného operátorem Constant Scan. konstantní prohledávání může vygenerovat jeden nebo více řádků s nulovými nebo více sloupci.

Konstantní kontrola je fyzický operátor.
Převést Operátor Convert převede jeden skalární datový typ na jiný.

Convert je prvek jazyka.
křížové spojení Operátor křížové spojení spojí každý řádek z prvního (horního) vstupu s každým řádkem z druhého (dolního) vstupu.

Křížové Spojení je logický operátor.
kurzor Kurzor logické a fyzické operátory slouží k popisu způsobu provádění dotazu nebo aktualizace zahrnující operace kurzoru. Fyzické operátory popisují algoritmus fyzické implementace použitý ke zpracování kurzoru; Například pomocí kurzoru řízeného pomocí sady klíčů. Každý krok při spuštění kurzoru zahrnuje fyzický operátor. Logické operátory popisují vlastnost kurzoru, například kurzor je jen pro čtení.

Logické operátory zahrnují asynchronní, optimistický, primární, pouze pro čtení, posuvné zámky, sekundárnía synchronní.

Mezi fyzické operátory patří dynamické, Fetch Query , keyset, population query, Refresh Querya Snapshot.
Deklarujte Operátor Declare přidělí místní proměnnou v plánu dotazu.

Declare je prvek jazyka.
Smazat Operátor Delete odstraní řádky (z objektu), které vyhovují volitelnému predikátu v podokně Vlastnosti.

Delete je logický operátor.
smazané kontroly V triggerech operátor Odstraněná kontrola prohledá odstraněnou tabulku.

Odstraněné scanování je logický a fyzický operátor.
Žádný jedinečné Operátor Distinct odebere duplicity ze sady řádků nebo z kolekce hodnot.

Distinct je logický operátor.
Žádný jedinečné řazení Logický operátor Distinct Sort prohledá vstup, odebere duplicity a řazení podle sloupců zadaných ve vlastnosti OrderBy podokna Properties .

Distinct Sort je logický operátor.
distribuce datových proudů Operátor Distribute Streams se používá pouze v paralelních plánech dotazů. Operátor Distribute Streams přebírá jeden vstupní datový proud záznamů a vytváří více výstupních datových proudů. Obsah a formát záznamu se nezmění. Každý záznam ze vstupního datového proudu se zobrazí v jednom z výstupních datových proudů, pokud typ dělení není Všesměrový, v takovém případě se každý vstupní řádek zobrazí ve všech výstupních datových proudech. Tento operátor automaticky zachová relativní pořadí vstupních záznamů ve výstupních datových proudech. Obvykle se hashování používá k rozhodnutí, ke kterému výstupnímu streamu patří konkrétní vstupní záznam.

Pokud je výstup rozdělený do oddílů, pak podokno Vlastnosti obsahuje PartitionColumns vlastnost a sloupce dělení.

Distribuce streamů je logický operátor.
dynamické Operátor Dynamický používá kurzor, který může zobrazit všechny změny provedené ostatními.

Dynamic je fyzický operátor.
Předběžné zásobování Operátor Eager Spool přebírá celý vstup a ukládá každý řádek do dočasného skrytého objektu v databázi tempdb. Pokud je operátor přetočen (například operátorem vnořených smyček), ale není potřeba opětovné navázání, místo opětovného prohledání vstupu se použijí uložená data. Pokud je potřeba přepojení, zařazená data se zahodí a objekt pro zařazování se znovu sestaví opětovným prohledáním vstupu. Operátor dychtivého spooling sestaví svůj soubor spooling "dychtivým" způsobem: když nadřazený operátor vyžádá první řádek, operátor spoolingu spotřebovává všechny řádky od svého vstupního operátoru a uloží je do spooling.

Eager Spool je logický operátor.
Dotaz načtení Operátor Fetch Query načte řádky, když je pro kurzor vydán příkaz načtení.

Fetch Query je fyzický operátor.
filtru Operátor Filtru naskenuje vstup a vrátí pouze řádky, které vyhovují výrazu filtru (predikát), který se zobrazí v podokně Vlastnosti.
Žádný Jasný tok Operátor Flow Distinct naskenuje vstup a odebere duplicity. Zatímco operátor Distinct využívá před vytvořením jakéhokoli výstupu veškerý vstup, operátor Flow Distinct vrátí každý řádek, který se získá ze vstupu (pokud tento řádek není duplicitní, v takovém případě se zahodí).

Flow Distinct je logický operátor.
Kontrola odkazů na cizí klíč Operátor Kontrola odkazů cizího klíče provádí kontroly referenční integrity na místě tím, že porovnává upravený řádek s řádky v odkazujících tabulkách, aby ověřil, že tato změna nenaruší referenční integritu. Pokud na stejném primárním nebo jedinečném klíči existuje více než 253 odkazů na cizí klíč, použije se operátor Kontrola odkazů na cizí klíč .

Kontrola referencí na cizí klíč je logický a fyzický operátor.
úplné vnější spojení Úplné vnější spojení logický operátor vrátí každý řádek splňující predikát spojení z prvního (horního) vstupu spojeného s každým řádkem z druhého (dolního) vstupu. Vrátí také řádky z:

- První vstup, který neměl žádné shody ve druhém vstupu.

- Druhý vstup, ve kterém nebyly žádné shody s prvním vstupem.

Vstup, který neobsahuje odpovídající hodnoty, se vrátí jako hodnota null.

úplné vnější spojení je logický operátor.
shromažďování datových proudů Operátor Shromažďování streamů se používá pouze v plánech paralelních dotazů. Operátor Shromáždit datové proudy využívá několik vstupních datových proudů a vytváří jeden výstupní datový proud záznamů zkombinováním vstupních datových proudů. Obsah a formát záznamu se nezmění. Pokud tento operátor zachovává pořadí, musí být všechny vstupní datové proudy seřazené. Pokud je výstup seřazený, podokno Vlastnosti obsahuje vlastnost OrderBy a názvy řazených sloupců.

Shromažďování datových proudů je logický operátor.
Hash shoda Operátor Hash Match sestaví tabulku hash výpočtem hodnoty hash pro každý řádek z jeho vstupu pro sestavení. Vlastnosti HashKeysBuild a HashKeysProbe uvádějí sloupce použité k vytvoření hodnoty hash pro vstup sestavení a vstup testování a zobrazují se v podokně Vlastnosti. Potom pro každý řádek sondy (podle potřeby) vypočítá hodnotu hash (pomocí stejné funkce hash) a vyhledá v tabulce hash shodu. Pokud je přítomen residuální predikát (zobrazený v podokně Properties jako vlastnost BuildResidual nebo ProbeResidual), musí být tento predikát také splněn, aby byly řádky považovány za odpovídající. Chování závisí na prováděné logické operaci:

– U všech spojení použijte první (horní) vstup k sestavení tabulky hash a druhý (dolní) vstup k prozkoumání hashovací tabulky. Výstup odpovídá shodám (nebo neshodám) podle typu spojení. Pokud více spojení používá stejný sloupec spojení, tyto operace jsou seskupeny do hash týmu.

– Pro odlišné nebo agregační operátory použijte vstup k vytvoření hashovací tabulky (odebrání duplicit a výpočtu všech agregačních výrazů). Po sestavení tabulky hash prohlédněte tabulku a vypište všechny položky.

– Pro sjednocovací operátor použijte první vstup k sestavení hashovací tabulky, přičemž se odstraní duplicitní položky. Použijte druhý vstup (který nesmí obsahovat žádné duplicity) k sondování tabulky hash, vrácení všech řádků, které nemají shodu, a pak naskenujte tabulku hash a vraťte všechny položky.

shoda hodnot hash je fyzický operátor. Další informace najdete v tématu Principy spojení hodnot hash.
odstranění indexu Operátor Odstranění indexu odstraní řádky z neclusterovaného indexu zadaného v podokně Vlastnosti.

Index Delete je fyzický operátor.
Vložení indexu Operátor Vložení indexu vloží řádky ze svého vstupu do neklastrového indexu zadaného v podokně Vlastnosti. Podokno Vlastnosti obsahuje také vlastnost SetPredicate , která označuje hodnotu, na kterou je každý sloupec nastaven.

Index Insert je fyzický operátor.
prohledávání indexů Operátor Prohledávání indexu načte všechny řádky z neklastrovaného indexu zadaného v panelu Vlastnosti. Pokud se v podokně Vlastnosti zobrazí volitelná vlastnost Predikát, vrátí se pouze řádky, které splňují predikát. Pokud má Vlastnost Orderedhodnotu True, vrátí se řádky v pořadí, ve kterém je neclusterovaný index seřadil. Pokud je vlastnost OrderedFalse, Database Engine prohledá index bez záruky pořadí výstupu.

Prohledávání indexu je logický a fyzický operátor.
vyhledávání v indexu Operátor Index Seek používá schopnost indexů načítat řádky z neclusterovaného indexu. Podokno Vlastnosti obsahuje název použitého neclusterovaného indexu. Obsahuje také SeekPredicates vlastnost. Database Engine používá index ke zpracování pouze ty řádky, které vyhovují SeekPredicates vlastnost. Volitelně může zahrnovat predikát vlastnost, kterou Database Engine vyhodnotí pro všechny řádky, které splňují vlastnost SeekPredicates (k tomu nepoužívá indexy).

Index Seek je logický a fyzický operátor.
Indexová cívka Operátor Index Spool obsahuje SeekPredicates vlastnost v podokně Vlastnosti . Operátor Index Spool prohledá vstupní řádky, umístí kopii každého řádku do skrytého souboru paměťového mezičlánku (uloženého v databázi tempdb a existujícího pouze po dobu životnosti dotazu) a vytvoří na řádcích index. To vám umožní využít vyhledávací schopnost indexů k vrácení pouze těch řádků, které splňují vlastnost SeekPredicates.

Index Spool je fyzický operátor.
aktualizace indexu Aktualizace indexu fyzický operátor aktualizuje řádky ze vstupu v neclusterovaném indexu zadaném v podokně Vlastnosti. Pokud je k dispozici vlastnost SetPredicate, nastaví se každý aktualizovaný sloupec na tuto hodnotu.

Aktualizace indexu je fyzický operátor.
Vnitřní spojení Operátor Inner Join vrátí každý řádek, který splňuje predikát spojení prvního (horního) vstupu s druhým (dolním) vstupem.

inner join je logický operátor.
Vložit Operátor Vložit umístí každou řádku z jeho vstupu do objektu specifikovaného v podokně Vlastnosti. Fyzickým operátorem je buď operátor vložení tabulky , vložení indexu, nebo vložení seskupeného indexu.

Insert je logický operátor.
Vložený sken V triggerech operátor Inserted Scan prohledá vloženou tabulku.

Vložený sken je logický a fyzický operátor.
vnitřní Vnitřní operátor vyvolá interní funkci Transact-SQL.

Vnitřní je jazykový prvek.
Iterátor Ikona iterátoru catchall se zobrazí, když logika, která vytváří grafické showplany, nenajde vhodnou ikonu iterátoru. Ikona catchall nemusí nutně znamenat chybový stav.
vyhledávání klíčů Operátor vyhledávání klíčů je vyhledávání záložek v tabulce s clusterovaným indexem nebo clusterovaným indexem columnstore. V případě clusterovaného indexu obsahuje podokno Vlastnosti název clusterovaného indexu a klíč clusteringu použitý k vyhledání řádku. Pro clusterovaný index columnstore je místo klíče clusteringu k dispozici colStoreLoc . Hledání klíče je vždy doprovázeno operátorem vnořených smyček. Pokud se klauzule WITH PREFETCH zobrazí v podokně Vlastnosti, procesor dotazu zjistil, že při vyhledávání záložek v clusterovém indexu je optimální použít asynchronní předběžné načtení (dopředu).

Použití klíčového vyhledávání s vysokým počtem spuštění vzhledem k velikosti tabulky může být užitečné při přidání krytého indexu. Nízký počet spuštění obvykle není problém s výkonem.
sada klíčů Operátor keyset používá kurzor, který může zobrazit aktualizace, ale ne vložení provedené jinými uživateli.

Keyset je fyzický operátor.
jazykový prvek Ikona elementu jazyka se zobrazí jako zástupná při absenci vhodné ikony pro iterátor, když logika, která vytváří grafické plány, nenajde takovou ikonu. Ikona catchall nemusí nutně znamenat chybový stav.
Líný spool Lazy Spool logický operátor ukládá každý řádek ze vstupu do skrytého dočasného objektu uloženého v databázi tempdb. Pokud je operátor přetočen (například operátorem vnořených smyček), ale není potřeba opětovné navázání, místo opětovného prohledání vstupu se použijí uložená data. Pokud je potřeba přepojení, zařazená data se zahodí a objekt pro zařazování se znovu sestaví opětovným prohledáním vstupu. Operátor Lazy Spool sestaví soubor spoolu zpomaleným způsobem, tedy pokaždé, když nadřazený operátor spoolu požádá o řádek, operátor zařazování získá řádek od svého vstupního operátoru a uloží ho do spoolu, místo spotřebovávání všech řádků najednou.

Lazy Spool je logický operátor.
Žádný levý antimi join Operátor Left Anti Semi Join vrátí každý řádek z prvního (horního) vstupu, pokud druhý (dolní) vstup neobsahuje žádný odpovídající řádek. Pokud v podokně Vlastnosti neexistuje žádný predikát spojení, je každý řádek odpovídajícím řádkem.

Left Anti Semi Join je logický operátor.
Žádný levé vnější spojení Operátor Levé vnější spojení vrátí každý řádek, který splňuje predikát spojení prvního (horního) vstupu s druhým (dolním) vstupem. Vrátí také všechny řádky z prvního vstupu, které nemají žádné odpovídající řádky ve druhém vstupu. Nesousoucí řádky ve druhém vstupu se vrátí jako hodnoty null. Pokud v podokně Vlastnosti neexistuje žádný predikát spojení, je každý řádek odpovídajícím řádkem.

levé vnější spoj je logický operátor.
Žádný Levý semispoj Operátor Levá střední spojení vrátí každý řádek z prvního (horního) vstupu, pokud je ve druhém (dolním) vstupu odpovídající řádek. Pokud v podokně Vlastnosti neexistuje žádný predikát spojení, je každý řádek odpovídajícím řádkem.

Levé semi spojení je logický operátor.
prohledávání řádků protokolu Operátor Prohledávání řádků protokolu prohledá transakční protokol.

Log Row Scan je logický a fyzický operátor.
interval sloučení Interval sloučení operátor slučuje více (potenciálně překrývajících) intervalů, aby se vytvořily minimální nepřekryvné intervaly, které se pak používají k hledání položek indexu. Tento operátor se obvykle zobrazí před jedním nebo více operátory Compute Scalar nad operátory Constant Scan, které vytvoří intervaly (reprezentované jako sloupce v řádku), které tento operátor sloučí.

Interval sloučení je logický a fyzický operátor.
sloučení spojení Operátor Merge Join provádí vnitřní spojení, levé vnější spojení, levé polospolkové spojení, levé anti-polospolkové spojení, pravé vnější spojení, pravé polospolkové spojení, pravé anti-polospolkové spojení, úplné vnější spojení, zřetězení a sjednocovací logické operace.

V podokně Vlastnosti operátor Merge Join uvádí sloupce spojení ve vlastnostech InnerSideJoinColumns a OuterSideJoinColumns. Atribut ManyToMany je True určen pro spojení M:N; chybí nebo False pro spojení 1:N. Je-li přítomna, vlastnost Residual obsahuje jakýkoli další predikát nad rámec klíčů sloučení, vyhodnocovaný pro řádky, které se shodují ve sloupcích spojení. Operátor Merge Join vyžaduje dva vstupy seřazené v příslušných sloupcích, pravděpodobně vložením explicitních operací řazení do plánu dotazu. Slučovací spojení je zvlášť efektivní, pokud není potřeba explicitní řazení, například pokud je v databázi vhodný index B-stromu nebo pokud je možné pořadí řazení využít pro více operací, jako je slučovací spojení a seskupení s rollup.

Sloučení spojení je fyzický operátor. Další informace naleznete v tématu Principy spojení sloučení.
vnořené smyčky Operátor vnořené smyčky provádí vnitřní spojení, levé vnější spojení, levé semi spojení a logické operace levé anti semi spojení.

Spojení vnořených smyček spouští vnitřní (dolní) vstup jednou pro každý řádek vnějšího (horního) vstupu. Pokud je vlastnost OuterReferences přítomna, spojení je dynamické: uvedené hodnoty sloupců z vnějšího řádku jsou vloženy do vnitřního vstupu, aby jeho operátory vracely pouze odpovídající řádky. V tomto případě se vlastnost Predikát nepoužívá. Pokud funkce OuterReferences chybí, spojení je statické: vnitřní vstup vrátí stejné řádky při každém spuštění a vlastnost Predikát v podokně Vlastnosti určuje, které kombinace se kvalifikují jako shody.

OPTIMIZED Pokud je atribut nastaven na True, operátor změní pořadí vnějšího vstupu, aby se zlepšila umístění vstupně-výstupních operací při přístupu k vnitřnímu vstupu. Někdy se tomu říká spojení optimalizovaných vnořených smyček.

Nested Loops je fyzický operátor. Další informace najdete v tématu Principy spojení vnořených smyček.
Žádný Online vložení indexu Operátor Online Index Insert označuje, že operace indexu (vytvoření, změna nebo odstranění) se provádí online. To znamená, že podkladová data tabulky zůstávají dostupná uživatelům během operace indexu.

Online Index Insert je fyzický operátor.
Žádné Paralelismus Operátor Parallelism (nebo Exchange Iterator) provádí distribuování datových proudů, shromažďování datových proudů a přerozdělování datových proudů jako logické operace. Podokno Vlastnosti může obsahovat vlastnost PartitionColumns se seznamem sloupců oddělených čárkami. Podokno Vlastnosti může také obsahovat vlastnost OrderBy se seznamem sloupců pro zachování pořadí řazení během dělení.

Poznámka: Pokud byl dotaz zkompilován jako paralelní dotaz, ale v době běhu se spustí jako sériový dotaz, výstup showplan vygenerovaný parametrem SET STATISTICS XMLZahrnout skutečný plán provádění v SQL Server Management Studio neobsahuje RunTimeInformation prvek pro operátor Parallelism. Ve výstupu SET STATISTICS PROFILE jsou skutečné počty řádků a skutečný počet spuštění zobrazeny jako nuly pro operátor Paralelismus. Pokud dojde k některé z podmínek, znamená to, že operátor Parallelism byl použit pouze během kompilace dotazu, a ne v plánu dotazu modulu runtime. V některých případech se plány paralelních dotazů spouštějí sériově, pokud na serveru dochází k vysokému souběžnému zatížení.

Paralelizace je fyzický operátor. Další informace o paralelismu naleznete v tématu Operátor paralelismu.
prohledávání tabulky parametrů Operátor prohledávání tabulky parametrů čte interní sadu řádků, která se vytváří během INSERT ... EXEC příkazu. Tato sada řádků obsahuje výstup spuštěného modulu, například uloženou proceduru nebo dynamickou dávku SQL, pokud se tyto výsledky vloží do tabulky, dočasné tabulky nebo proměnné tabulky.

prohledávání tabulky parametrů je logický a fyzický operátor.
Žádný Částečná agregace Částečné agregace se obvykle používá v paralelních plánech. Použije agregační funkci na co nejvíce vstupních řádků, aby zápis na disk (označovaný jako "rozlití") nebyl nutný. Hash Match je jediný fyzický operátor (iterátor), který implementuje částečnou agregaci.

částečný agregát je logický operátor.
Dotaz na základní soubor Operátor Population Query naplní pracovní tabulku kurzoru při otevření kurzoru.

Dotaz populace je fyzický operátor.
Umístit Operátor Put vloží data do externí tabulky (PolyBase). Na rozdíl od jiných operátorů vložení nevrací Put žádné řádky svému nadřazenému operátoru. V SQL Server 2016 (13.x) až SQL Server 2019 (15.x) Put operátor cílí na Hadoop a běží v režimu řádků. V SQL Server 2022 (16.x) a novějších verzích Put cílí na Azure Storage nebo úložiště kompatibilní s S3 a běží v dávkovém režimu. Další informace najdete v části CREATE EXTERNAL TABLE AS SELECT (CETAS).

Put je fyzický operátor.

Platí pro: SQL Server 2016 (13.x) a novější verze.
aktualizovat dotaz Operátor Refresh Query načte aktuální data pro řádky v vyrovnávací paměti pro načtení.

Refresh Query je fyzický operátor.
Vzdálené odstranění Operátor vzdáleného odstranění odstraní vstupní řádky ze vzdáleného objektu.

Vzdálené odstranění je logický a fyzický operátor.
prohledávání vzdáleného indexu Operátor Vzdálené prohledávání indexu prohledá vzdálený index zadaný v podokně Vlastnosti.

Vzdálené prohledávání indexu je logický a fyzický operátor.
hledání vzdáleného indexu Operátor Remote Index Seek využívá schopnost vzdáleného indexového objektu vyhledávat a získávat řádky. Podokno Vlastnosti obsahuje název používaného vzdáleného indexu a vlastnost SeekPredicates .

Vzdálené vyhledávání indexu je logický a fyzický operátor.
vzdálené vložení Operátor pro Vzdálené vložení vloží vstupní řádky do vzdáleného objektu.

"Remote Insert" je logický a fyzický operátor.
vzdáleného dotazu Operátor vzdáleného dotazu odešle dotaz do vzdáleného zdroje. Text dotazu odeslaného na vzdálený server se zobrazí v podokně Vlastnosti.

Vzdálený dotaz je logický a fyzický operátor.
vzdálené skenování Operátor vzdálené kontroly prohledá vzdálený objekt. Název vzdáleného objektu se zobrazí v podokně Vlastnosti.

Remote Scan je logický a fyzický operátor.
vzdálená aktualizace Operátor Vzdálené aktualizace aktualizuje vstupní řádky ve vzdáleném objektu.

Vzdálená aktualizace je logický a fyzický operátor.
přerozdělení proudy Operátor Repartition Streams (nebo exchange iterator) využívá více datových proudů a vytváří více datových proudů záznamů. Obsah a formát záznamu se nezmění. Pokud optimalizátor dotazů používá rastrový filtr, sníží se počet řádků ve výstupním datovém proudu. Každý záznam ze vstupního datového proudu se umístí do jednoho výstupního datového proudu. Pokud tento operátor zachovává pořadí, musí být všechny vstupní datové proudy seřazené a sloučené do několika uspořádaných výstupních datových proudů. Pokud je výstup rozdělený do oddílů, podokno Vlastnosti obsahuje partitionColumns vlastnost a sloupce dělení. Pokud je výstup seřazen, podokno Vlastnosti obsahuje vlastnost OrderBy a sloupce, podle nichž je řazen. Operátor se používá pouze v paralelních dotazových plánech.

Repartition Streams je logický operátor.
výsledek Operátor Result je data vrácená na konci plánu dotazu. Toto je obvykle kořenový prvek showplanu.

Výsledek je prvek jazyka.
Vyhledávání RID vyhledávání identifikátorů RID je vyhledávání záložek v haldě pomocí zadaného identifikátoru řádku (RID). Podokno Vlastnosti obsahuje popisek záložky, který slouží k vyhledání řádku v tabulce, a také název tabulky, ve které se řádek vyhledává. Vyhledávání identifikátorů RID je vždy doprovázeno operátorem vnořených smyček .

Vyhledání identifikátoru RID je fyzický operátor. Další informace o vyhledávání záložek naleznete v tématu Read Committed a Bookmark Lookup.
Žádný Pravé antisemispojení Operátor Right Anti Semi Join vypíše každý řádek z druhého (dolního) vstupu, pokud neexistuje odpovídající řádek v prvním (horním) vstupu. Odpovídající řádek je definován jako řádek, který splňuje predikát v podokně Vlastnosti (pokud neexistuje žádný predikát, každý řádek je odpovídající řádek).

Right Anti Semi Join je logický operátor.
Žádný pravé vnější spojení Operátor Pravé vnější spojení vrátí každý řádek, který splňuje spojení druhého (dolního) vstupu s každým odpovídajícím řádkem z prvního (horního) vstupu. Vrátí také všechny řádky z druhého vstupu, které neměly žádné odpovídající řádky v prvním vstupu, spojené s NULL. Pokud v podokně Vlastnosti neexistuje žádný predikát spojení, je každý řádek odpovídajícím řádkem.

Pravé vnější spojení je logický operátor.
Žádný pravé semi spojení Operátor Right Semi Join vrátí každý řádek z druhého (dolního) vstupu, pokud je v prvním (horním) vstupu odpovídající řádek. Pokud v podokně Vlastnosti neexistuje žádný predikát spojení, je každý řádek odpovídajícím řádkem.

Pravé polo připojení je logický operátor.
Frázování počtu řádků Operátor počítadla řádků prochází vstup, počítá, kolik řádků je přítomno, a vrací stejný počet prázdných řádků. Tento operátor se používá, když je důležité zkontrolovat existenci řádků, nikoli data obsažená v řádcích. Pokud například operátor Vnořených Smyček provede operaci levého polosemi spojení a predikát spojení se vztahuje na vnitřní vstup, může být mezipaměť počtu řádků umístěna v horní části vnitřního vstupu operátoru Vnořených Smyček. Potom operátor vnořené smyčky může určit, kolik řádků je výstupem fondu počtu řádků (protože skutečná data z vnitřní strany nejsou nutná) a určit, jestli se má vnější řádek vrátit.

Row Count Spool je fyzický operátor.
Žádný Přerozdělení segmentů V plánu paralelního dotazu někdy existují koncepční oblasti iterátorů. Všechny iterátory v této oblasti se můžou spouštět na paralelních vláknech. Samotné oblasti musí pracovat sériově. Některé z iterátorů paralelismu v rámci jednotlivých regionů se nazývají větvení přerozdělení. Paralelismus iterátor na hranici dvou takových oblastí se nazývá Segment Repartition.

Rozdělení větve a Rozdělení segmentů jsou logické operátory.
segment Operátor Segment rozdělí vstupní sadu na segmenty na základě hodnoty jednoho nebo více sloupců. Tyto sloupce se zobrazují jako argumenty v operátoru Segment. Vstup se seřadí podle těchto sloupců. Operátor používá sloupec segmentů k označení prvního řádku každého segmentu.

Segment je fyzický a logický operátor.
Projekt sekvence Operátor Sequence Project přidává sloupce pro provádění výpočtů přes seřazenou sadu. Vyžaduje rozdělení vstupní sady na segmenty na základě hodnoty jednoho nebo více sloupců.

Sekvenční Projekt je logický a fyzický operátor.
sekvence Operátor Sequence spouští každý vstup v sekvenci (shora dolů) a vrací pouze řádky, které pocházejí z posledního (dolního) vstupu. Mezi běžné použití patří plány širokých aktualizací (kde každý vstup obvykle představuje aktualizaci jiného objektu), dotazy, které používají funkce s více příkazy s hodnotami tabulek, a dotazy, které používají SHORTEST_PATH v tabulce grafu.

Sequence je logický a fyzický operátor.
Snímek Operátor Snapshot vytvoří kurzor, který neuvidí změny provedené jinými uživateli.

Snapshot je fyzický operátor.
řazení Operátor Seřadit seřadí všechny příchozí řádky. Podokno Vlastnosti obsahuje vlastnost OrderBy se seznamem sloupců, které jsou seřazené čárkami. Atribut Distinct je True, pokud tato operace odebere duplicity. Sloupce mají předponu hodnoty ASC, pokud jsou seřazeny vzestupně, nebo hodnoty DESC, pokud jsou seřazeny sestupně.

Sort je logický a fyzický operátor.
Rozdělení Operátor Split slouží k optimalizaci zpracování aktualizací. Rozdělí každou operaci aktualizace na operaci odstranění a operaci vložení.

Rozdělení je logický a fyzický operátor.
Spool Operátor Spool uloží zprostředkující výsledek dotazu do databáze tempdb.
Agregace proudu Operátor Stream Aggregate seskupuje řádky podle jednoho nebo více sloupců a pak vypočítá jeden nebo více agregačních výrazů vrácených dotazem. Operátor agregace streamu vyžaduje zadání seřazené podle sloupců v rámci skupin. Optimalizátor používá operátor Řazení před tímto operátorem, pokud data ještě nejsou seřazená z důvodu předchozího operátoru Řazení nebo kvůli uspořádanému vyhledávání nebo prohledávání indexu. SHOWPLAN_ALL V příkazu nebo grafickém plánu provádění v SQL Server Management Studio jsou sloupce ve vlastnosti GroupBy uvedeny v podokně Vlastnosti a agregační výrazy jsou uvedeny ve sloupci DefinedValues.

agregování streamu je fyzický operátor.
Přepínač přepínač je speciální typ iterátoru zřetězení, který má n vstupy. Výraz je přidružen ke každému operátoru Switch. V závislosti na návratové hodnotě výrazu (mezi 0 a n-1) spustí přepínač odpovídající vstup a vrátí jeho řádky. Přepínač se používá k implementaci plánů dotazů pro INSERT INTO příkazy v rozdělených zobrazeních. Používá se také k implementaci plánů dotazů zahrnujících rychlé posuvné kurzory s některými operátory, jako je operátor TOP.

přepínač je logický a fyzický operátor.
Odstranění tabulky Operátor Table Delete odstraní řádky z tabulky zadané v podokně vlastnosti plánu provádění dotazu.

Odstranit tabulku je fyzický operátor.
vložení tabulky Operátor Table Insert vloží řádky ze vstupu do tabulky zadané v podokně Vlastnosti plánu provádění dotazu. Podokno Vlastnosti obsahuje také vlastnost SetPredicate , která označuje hodnotu, na kterou je každý sloupec nastaven. Pokud Vložit tabulku nemá žádné podřízené položky pro vložení hodnot, pak vložený řádek se převezme ze samotného operátoru Insert.

Vložení tabulky je fyzický operátor.
sloučení tabulek Operátor Table Merge použije na haldu slučovací datový proud. Operátor odstraní, aktualizuje nebo vloží řádky do tabulky zadané v podokně Vlastnosti operátoru. Provedená operace skutečně závisí na hodnotě vlastnosti ActionColumn za běhu.

Sloučení tabulek je fyzický operátor.
Prohledávání tabulek Operátor Prohledávání tabulky načte všechny řádky z tabulky typu heap zadané v podokně Vlastnosti v plánu spuštění dotazu. Pokud je přítomna volitelná predikát vlastnost, vrátí se pouze řádky, které splňují predikát.

prohledávání tabulky je logický a fyzický operátor.
dočasné úložiště tabulky Operátor Table Spool prochází vstup a ukládá kopii každého řádku do skryté pracovní tabulky, která je uložená v databázi tempdb a existuje pouze po dobu trvání dotazu. Pokud je operátor přetočen (například operátorem vnořených smyček), ale není potřeba opětovné navázání, místo opětovného prohledání vstupu se použijí uložená data.

Tabulkový spool je fyzickým operátorem.
aktualizace tabulky Operátor Table Update aktualizuje vstupní řádky v haldové tabulce uvedené v podokně Vlastnosti plánu provádění dotazu. Vlastnost SetPredicate určuje hodnotu každého aktualizovaného sloupce. Tyto hodnoty mohou být odkazovány v klauzuli SET nebo jinde v tomto operátoru a jinde v tomto dotazu.

Table Update je fyzický operátor.
Table-valued function Operátor funkce s hodnotou tabulky vyhodnotí funkci s hodnotou tabulky (Transact-SQL nebo CLR) a uloží výsledné řádky do databáze tempdb. Když nadřazené iterátory požadují řádky, vrátí funkce s hodnotou tabulky řádky z tempdb. Funkci s hodnotou tabulky je možné vyhodnotit s různými hodnotami parametrů:

- Tabulková funkce XML Reader přijímá XML BLOB jako parametr a vrací sadu řádků představujících uzly XML v pořadí uzlů v dokumentu XML. Jiné vstupní parametry můžou omezit uzly XML vrácené do podmnožina dokumentu XML.

- Tabulková funkce Čtečka XML s filtrem XPath je speciální typ tabulkové funkce Čtečka XML, která omezuje výstup na uzly XML vyhovující výrazu XPath.

Dotazy s voláním funkcí s hodnotami tabulky generují plány dotazů pomocí iterátoru funkce s hodnotou Table .

Funkce vracející tabulku je logický i fyzický operátor.
nahoře Operátor Top prohledá vstup a vrátí pouze první zadaný počet nebo procento řádků ze svého vstupu, pravděpodobně na základě pořadí řazení. Podokno Vlastnosti může obsahovat seznam sloupců, u kterých se kontroluje vazby. V plánech aktualizací se k vynucení limitů počtu řádků používá také operátor Top .

Top je logický a fyzický operátor.
Žádný Řazení TopN Funkce TopN Sort je podobná iterátoru Řazení , s tím rozdílem, že jsou potřeba jenom první N řádky, a ne celá sada výsledků. U malých hodnot Nse modul spouštění dotazů SQL Serveru pokusí provést celou operaci řazení v paměti. U velkých hodnot Nse modul spouštění dotazů uchýlí k obecnější metodě řazení, na kterou N není parametr.
UDX Rozšířené operátory (UDX) implementují jednu z mnoha operací XQuery a XPath v SQL Serveru.

- Rozšířený operátor (UDX) FOR XML se používá k serializaci relačního řádku, který nastaví vstupy do reprezentace XML v jednom sloupci objektu BLOB v jednom výstupním řádku. Jedná se o operátor agregace xml citlivé na pořadí.

– Rozšířený operátor (UDX) XML SERIALIZER je operátor agregace XML citlivý na pořadí. Zadává řádky představující uzly XML nebo skaláry XQuery v pořadí dokumentu XML a vytvoří serializovaný objekt BLOB XML v jednom sloupci XML v jednom výstupním řádku.

- Rozšířený operátor (UDX) XML FRAGMENT SERIALIZER je speciální typ XML SERIALIZER , který se používá ke zpracování vstupních řádků představujících fragmenty XML vložené do rozšíření pro úpravu dat XQuery.

– Rozšířený operátor (UDX) XQUERY STRING vyhodnotí řetězcovou hodnotu XQuery vstupních řádků představujících uzly XML. Jedná se o operátor agregace řetězců s ohledem na pořadí. Vypíše jeden řádek se sloupci představující skalár XQuery, který obsahuje řetězcovou hodnotu vstupu.

– Rozšířený operátor (UDX) XQUERY LIST DECOMPOSER je operátor rozkladu seznamu XQuery. Pro každý vstupní řádek představující uzel XML vytvoří jeden nebo více řádků každý představující skalár XQuery obsahující hodnotu prvku seznamu, pokud je vstup typu seznamu XSD.

– Rozšířený operátor (UDX) XQUERY DATA vyhodnocuje funkci XQuery fn:data() na vstupu představujících uzly XML. Jedná se o operátor agregace řetězců s ohledem na pořadí. Vypíše jeden řádek se sloupci představujícími skalár XQuery, který obsahuje výsledek fn:data().

- Rozšířený operátor XQUERY CONTAINS vyhodnotí funkci XQuery fn:contains() na vstupu představující uzly XML. Jedná se o operátor agregace řetězců s ohledem na pořadí. Vypíše jeden řádek se sloupci představujícími skalár XQuery, který obsahuje výsledek fn:contains().

- Rozšířený operátor UPDATE XML NODE aktualizuje uzel XML v rozšíření pro úpravu dat příkazu XQuery replace v metodě typu XML modify().

UDX operátory jsou logické i fyzické operátory.
Unie Operátor Union prohledá více vstupů a vypíše jednotlivé řádky naskenované a odebere duplicity.

Unie je logický operátor.
Aktualizace Operátor Update aktualizuje každý řádek ze vstupu v objektu zadaném v podokně vlastnosti plánu provádění dotazu.

Update je logický operátor. Fyzický operátor je Table Update, Index Update, Clustered Index Update nebo Columnstore Index Update.
Žádný Hledání vektorových indexů Operátor Vector Index Seek používá vektorový index k vyhledání přibližných shod nejbližšího souseda během vektorového vyhledávání.

Vector Index Seek je logický a fyzický operátor.
Žádný Agregace okna Operátor Agregace okna vyhodnotí jeden nebo více agregačních výrazů s definicí okna a přidá výsledky do datového proudu.

Agregace oken je logický a fyzický operátor.
zařazování oken Operátor Navíječ oken rozšiřuje každý řádek do sady řádků, které reprezentují okno k němu přidružené. V dotazu klauzule OVER definuje okno v sadě výsledků dotazu a funkce okna pak vypočítá hodnotu pro každý řádek v okně. Operátor ukládá všechny vstupní řádky do skryté pracovní tabulky v databázi tempdb nebo v paměti.

Fond oken je logický a fyzický operátor.

Poznámka

Dokumentace používá termín B-tree obecně v odkazu na indexy. V indexech rowstore databázový stroj implementuje strom B+. To neplatí pro indexy columnstore ani indexy v tabulkách optimalizovaných pro paměť. Další informace najdete v SQL Serveru a architektuře indexu Azure SQL a průvodci návrhem.