Operatorreferens för logisk och fysisk showplan

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Operatorer beskriver hur Databasmotor för SQL Server kör en fråga. Frågeoptimeraren använder operatorer för att skapa en frågeplan för att skapa resultatet eller utföra åtgärden som anges i frågan. Frågeplanen är ett träd som består av fysiska operatorer. Den vänstra operatorn är roten, som driver den övergripande exekveringen. För en SELECT -instruktion returnerar roten vanligtvis en resultatuppsättning till klienten. För datamodifieringsinstruktioner (INSERT, , UPDATEDELETE, MERGE) eller -instruktioner som SELECT...INTO, styr roten ändringen och kanske inte returnerar rader. Operatorer utan indata längst till höger i trädet är lövnoder som vanligtvis läser data från lagring. Mellanliggande operatorer transformerar, filtrerar eller kopplar data när de flödar från höger till vänster genom planen.

Du kan visa frågeplanen genom att använda SET SHOWPLAN-satserna, de grafiska körningsplansalternativen i SQL Server Management Studio eller showplanhändelserna för Extended Events.

Operatortyper

Operatorer klassificeras som logiska och fysiska operatorer.

Logiska operatorer

Logiska operatorer beskriver den relationsalgebraiska åtgärd som används för att bearbeta en fråga. Med andra ord beskriver logiska operatorer konceptuellt vilken åtgärd som behöver utföras.

Fysiska operatorer

Fysiska operatorer implementerar åtgärden som beskrivs av logiska operatorer. Varje fysisk operator är ett objekt eller en rutin som utför en åtgärd. Vissa fysiska operatorer har till exempel åtkomst till kolumner eller rader från en tabell, ett index eller en vy. Andra fysiska operatorer utför åtgärder som beräkningar, aggregeringar, dataintegritetskontroller eller kopplingar. Fysiska operatörer har kostnader kopplade till sig.

De fysiska operatorerna initierar, samlar in data och stänger. Mer specifikt kan den fysiska operatorn besvara följande tre metodanrop:

  • Open(): Metoden Open() gör att en fysisk operator initierar sig själv och konfigurerar nödvändiga datastrukturer. Även om den fysiska operatorn kan ta emot många Open() anrop tar den vanligtvis bara emot ett.

  • GetRow(): Metoden GetRow() gör att en fysisk operator hämtar den första eller efterföljande raden med data. Den fysiska operatorn kan ta emot noll eller många GetRow() anrop.

  • Close(): Metoden Close() gör att en fysisk operator utför vissa rensningsåtgärder och stänger av sig själv. En fysisk operatör tar bara emot ett Close() samtal, men ett Close() samtal är inte alltid garanterat.

Metoden GetRow() returnerar en rad data, och antalet gånger den anropas visas som ActualRows i showplanutdata som genereras av de grafiska och XML-showplanerna. Mer information om de här SET alternativen finns i ANGE STATISTIKPROFIL och ANGE STATISTIK-XML.

Språkelement

Vissa operatorer i en frågeplan representerar Transact-SQL språkelement i stället för relationsåtgärder. Dessa omfattar konstruktioner som variabeltilldelning, typkonvertering och kontrollflöde (IF/WHILE). Språkelement klassificeras inte som logiska eller fysiska operatorer.

Ombindningar, spolar tillbaka och slut på skanningar

Följande räknare visas i showplan-utdata och hjälper dig att förstå hur ofta en operator körs igen.

Antalet ActualRebinds och ActualRewinds som visas i showplan-utdata refererar till antalet gånger som Open() metoden anropas. Om inte en operator finns på den inre sidan av en kapslad loopkoppling är ActualRebinds lika med en och ActualRewinds är lika med noll. Om en operator befinner sig på den inre sidan av en loopsammankoppling ska det totala antalet ombindningar och återgångar vara lika med antalet rader som bearbetas på den yttre sidan av sammankopplingen. En ombindning innebär att en eller flera av de korrelerade parametrarna för kopplingen har ändrats och att den inre sidan måste omvärderas. En bakåtspolning innebär att ingen av de korrelerade parametrarna har ändrats och att den tidigare inre resultatuppsättningen kan återanvändas.

ActualRebinds och ActualRewinds finns i XML showplan-utdata som produceras med hjälp av SET STATISTICS XML ON och den grafiska showplanen. De fylls i för operatorer som Index Spool, Remote Query, Row Count Spool, Sort, Table Spool och Table-valued Function. ActualRebinds och ActualRewinds kan också fyllas i för operatorer som Assert och Filter när attributet StartupExpression är inställt på TRUE.

När ActualRebinds och ActualRewinds finns i en XML-showplan är de jämförbara med EstimateRebinds och EstimateRewinds. När de är frånvarande är det uppskattade antalet rader (EstimateRows) jämförbara med det faktiska antalet rader (ActualRows). Faktiska grafiska showplan-utdata visar nollor för de faktiska ombindningarna och faktiska bakåtspolningar när de saknas.

En relaterad räknare, ActualEndOfScans, är tillgänglig i XML och grafisk showplan. Varje gång en fysisk operator når slutet av sin dataström, ökar denna räknare med ett. En fysisk operatör kan nå slutet av sin dataström noll, en eller flera gånger. Precis som med ombindningar och återställningar kan antalet avsökningar överstiga en, endast om operatorn är på den inre sidan av en loop-sammanfogning. Slutet på antalet skanningar bör vara mindre än eller lika med summan av antalet ombindningar och bakåtspolningar.

Så här mappar Frågeoptimeraren logiska och fysiska operatorer

Frågeoptimeraren skapar en frågeplan som ett träd som består av logiska operatorer. När Frågeoptimeraren har skapat planen väljer den en fysisk operator för varje logisk operator. Frågeoptimeraren använder en kostnadsbaserad metod för att avgöra vilken fysisk operator som implementerar en logisk operator.

Vanligtvis kan en logisk åtgärd implementeras av flera fysiska operatorer. I sällsynta fall kan dock en fysisk operator även implementera flera logiska åtgärder.

Körning av batchläge

Körning av batchläge är en frågebearbetningsmetod som används för att bearbeta flera rader tillsammans (därav termen batch) i stället för en rad i taget. Bearbetning i batchläge använder algoritmer som är optimerade för processorer med flera kärnor och ökat minnesgenomflöde på modern maskinvara. Batch-läge kan användas av en uppsättning operatorer för både radlagrings- och kolumnlagringsobjekt. Mer information finns i Arkitekturguide för frågebearbetning.

Hur man läser en exekveringsplan

I den grafiska körningsplanen pekar pilarna från höger till vänster och representerar dataflödet. Vid körning fungerar detta i motsatt riktning: operatorerna är pull-baserade och fungerar bara när de tillfrågas om data.

Rotoperatorn anropar GetRow() sitt underordnade, som i sin tur anropar sina egna barn, tills en lövnod läser en rad från lagringsenheten och återför den uppåt i kedjan. En klustrad indexgenomsökning inom en TOP-operator genomsöker inte hela tabellen, till exempel. Genomsökningen stoppas så snart Top har tillräckligt med rader. I batchläge returnerar varje anrop en batch med rader i stället för en enda rad. Båda läsriktningarna är användbara för att visa från höger till vänster vilka data som tillförs varje operatör, medan vänster till höger visar vilken operatör som driver arbetet.

Operatorbeskrivningar

Det här avsnittet innehåller beskrivningar av de logiska och fysiska operatorerna. Du kan visa egenskaperna för frågeplaner och operatorer med hjälp av fönstret Egenskaper i frågeplansvyn i SQL Server Management Studio (SSMS).

Tips/Råd

När ett visst grafiskt exekveringsplansikon har en gul cirkel med två pilar från höger till vänster innebär det att operatören kördes parallellt. Mer information om parallellitet finns i guiden Tråd- och uppgiftsarkitektur.

Icon Showplan-operator Description
Anpassningsbar koppling Operatorn Adaptive Join gör det möjligt att skjuta upp valet av en hashkopplings- eller kapslad loopkopplingsmetod tills den första indatan har genomsökts.

Adaptive Join är en fysisk operator. Mer information finns i Förstå adaptiva kopplingar.
Aggregat Operatorn Aggregate beräknar uttryck som innehåller en eller flera mängdfunktioner.

Aggregering är en logisk operator. Den kan implementeras av operatorn Stream Aggregate, Hash Match, Window Aggregate eller UserDefinedAggregate (CLR).
Aritmetikuttryck Operatorn Aritmetic Expression beräknar ett nytt värde från befintliga värden på en rad. Aritmetiska uttryck används inte i nyare versioner av SQL Server.
Hävda Assert-operatorn verifierar ett villkor. Den validerar till exempel referensintegritet eller ser till att en skalär underfråga returnerar en rad. För varje indatarad utvärderar Assert-operatorn uttrycket i fönstret Egenskaper i körningsplanen. Om det här uttrycket utvärderas till NULLskickas raden genom Assert-operatorn och frågekörningen fortsätter. Om det här uttrycket utvärderas till ett värde som inte är null utlöses lämpligt fel.

Assert är en fysisk operator.
Tilldela Operatorn Tilldela tilldelar värdet för ett uttryck eller en konstant till en variabel.

Tilldela är ett språkelement.
None Async Concat Async Concat-operatorn används endast i fjärrfrågor (distribuerade frågor). Den har n barnnoder och en överordnad nod. Vanligtvis är några av de underordnade datorerna fjärrdatorer som deltar i en distribuerad sökning. Async Concat gör Open() anrop till alla barn samtidigt och tillämpar sedan en bitmapp på varje barn. För varje bit som är en 1skickar Async Concat utdataraderna till den överordnade noden på begäran.

Async Concat är en fysisk operator.
Batch Hash Table Build Batch Hash Table Build-operatorn skapar en batch-hash-tabell för ett minnesoptimerad kolumnlagringsindex.

Applies to: SQL Server 2012 (endast 11.x).
Bitmap SQL Server använder bitmappsoperatorn för att implementera bitmappsfiltrering i parallella frågeplaner. Bitmappsfiltrering påskyndar frågebearbetningen genom att eliminera rader med nyckelvärden som inte kan generera några kopplingsposter innan rader skickas via en annan operator, till exempel parallellitetsoperatorn . Ett bitmappsfilter använder en kompakt representation av en uppsättning värden från en tabell i en del av operatorträdet för att filtrera rader från en andra tabell i en annan del av trädet. Genom att ta bort onödiga rader tidigt i frågan har efterföljande operatorer färre rader att arbeta med, och frågans övergripande prestanda förbättras. Optimeraren avgör när en bitmapp är tillräckligt selektiv för att vara användbar och i vilka operatorer filtret ska tillämpas.

Bitmap är en fysisk operator.
Bitmapp skapa Operatorn Skapa bitmapp visas i showplan-utdata där bitmappar skapas.

Bitmappsskapande är en logisk operator.
None Ompartition av gren I en parallell frågeplan finns det ibland konceptuella regioner med iteratorer. Alla iteratorer i en sådan region kan köras på parallella trådar. Själva regionerna måste köras seriellt. Några av Parallelism-iteratorerna i en enskild region kallas Branch Repartition. Parallellism-iteratorn vid gränsen för två sådana regioner kallas Segmentrepartition.

Ompartition av gren och segmentpartition är logiska operatorer.
Sändning Broadcast har en underordnad nod och n överordnade noder. Broadcast skickar sina ingående rader till flera mottagare vid behov. Varje konsument får alla rader. Till exempel, om alla konsumenter är byggsidor av en hash join, skapas n kopior av hash-tabellerna.

Broadcast är en logisk operator.
Borttagning av klustrat index Operatorn Borttagning av klustrat index tar bort rader från det klustrade index som anges i objektegenskapen, som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. Om det finns ett SeekPredicate eller Predicate tas endast de rader som uppfyller predikatet bort.

Observera:Egenskapen Object kan visa ytterligare icke-grupperade index som operatorn ändrar samtidigt som det klustrade indexet.

Borttagning av klustrat index är en fysisk operator.
Infoga klustrat index Operatorn Infoga grupperat index infogar rader från sina indata i det klustrade index som anges i egenskapen Object , som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. XML-showplan innehåller egenskaperna SetPredicate och ColumnReference , som kan användas för att fastställa det värde som varje kolumn har angetts till. Om Klustrad Indexinfogning inte har några underliggande värden för infogning hämtas den infogade raden direkt från Insert-operatorn själv.

Observera:Egenskapen Object kan visa ytterligare icke-grupperade index som operatorn ändrar samtidigt som det klustrade indexet.

Klustrad indexinfogning är en fysisk operator.
Sammanslagning av klustrat index Operatorn Sammanslagning av klustrat index tillämpar en sammanslagningsdataström på ett klustrat index. Operatorn tar bort, uppdaterar eller infogar rader från det klustrade index som anges i objektegenskapen, som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. Den faktiska åtgärden som utförs beror på värdet vid körning av egenskapen, ActionColumn.

Observera:Egenskapen Object kan visa ytterligare icke-grupperade index som operatorn ändrar samtidigt som det klustrade indexet.

Clustered Index Merge är en fysisk operator.
Genomsökning av klustrat index Operatorn Klustrad indexgenomsökning söker igenom det klustrade index som anges i egenskapen Object , som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. När det finns ett valfritt predikat returneras endast de rader som uppfyller predikatet. Om egenskapen Ordnad i fönstret Egenskaper eller XML-showplan är True har frågeprocessorn fastställt att raderna måste returneras i den ordning som det klustrade indexet har sorterat dem. Om egenskapen Ordered är False genomsöker Database Engine indexet utan att garantera ordningen på utdata. Egenskapen SeekPredicate är endast tillgänglig för ett partitionerat klustrat index.

Klustrad indexgenomsökning är en logisk och fysisk operator.
Klustrad indexsökning Operatorn Klustrad indexsökning använder sökförmågan för index för att hämta rader från ett grupperat index. Egenskapen Object , som visas i fönstret Egenskaper i de grafiska och XML-showplanerna, innehåller namnet på det klustrade index som används. SeekPredicate innehåller predikatet för sök. Databasmotorn använder indexet för att endast bearbeta de rader som uppfyller SeekPredicate. Den kan också inkludera en predikategenskap där databasmotorn utvärderar mot alla rader som uppfyller SeekPredicate, men detta är valfritt och det använder inte index för att slutföra den här processen. Egenskapen Ordered är vanligtvis True för den här operatorn.

Klustrad indexsökning är en logisk och fysisk operator.
Klustrad indexuppdatering Operatorn För uppdatering av klustrat index uppdaterar indatarader i det klustrade index som anges i egenskapen Objekt, listad i Egenskaper-panelen i de grafiska och XML-showplanerna. Om egenskapen Predikat finns uppdateras endast de rader som uppfyller det här predikatet. Om egenskapen SetPredicate finns anges varje uppdaterad kolumn till det här värdet. Om egenskapen DefineValue finns visas de värden som den här operatorn definierar. Dessa värden kan refereras till i SET -satsen eller någon annanstans inom den här operatorn och någon annanstans i den här frågan.

Observera:Egenskapen Object kan visa ytterligare icke-grupperade index som operatorn ändrar samtidigt som det klustrade indexet.

Klustrad indexuppdatering är en logisk och fysisk operator.
Kollaps Dölj-operatorn optimerar uppdateringsbearbetningen. När en uppdatering utförs kan den delas upp (med operatorn Split) i en borttagning och en infogning. Fönstret Egenskaper innehåller en grupp efter predikat som anger en lista med nyckelkolumner. Om frågeprocessorn stöter på intilliggande rader som tar bort och infogar samma nyckelvärden ersätter den dessa separata åtgärder med en enda, effektivare uppdateringsåtgärd.

Kollaps är en logisk och fysisk operator.
Ta bort kolumnlagringsindex Operatorn Columnstore Index Delete representerar borttagningen av rader från kolumnlagringsindexet som anges i egenskapen Object , som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. Borttagning sker via borttagning av klustrat index för ett grupperat kolumnlagringsindex och via operatorn Ta bort index för ett icke-grupperat kolumnlagringsindex. Indextypen (Klustrad, Icke-klustrad, Klustrad vy eller Icke-klustrad vy) anges i egenskapen IndexKind i XML-plan för schemavisning. SeekPredicate stöds inte för borttagning av kolumnlagringsindex. Rader som ska tas bort läses från en underordnad operator.

Borttagning av kolumnlagringsindex är en fysisk operator.
Kolumnlagringsindex infoga Operatorn Columnstore Index Insert representerar infogningen av rader från dess indata till kolumnlagringsindexet som anges i egenskapen Object, som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. Infogning sker via Den klustrade indexinfogningen för ett grupperat kolumnlagringsindex och via operatorn Indexinfogning för ett icke-grupperat kolumnlagringsindex. Indextypen (Klustrad, Icke-klustrad, VisaKlustrad eller VisaIckeKlustrad) anges i egenskapen IndexKind i XML-planvisa. XML-showplan innehåller egenskaperna SetPredicate och ColumnReference , som kan användas för att fastställa det värde som varje kolumn har angetts till.

Columnstore Index Insert är en fysisk operator.
Sammanslagning av kolumnlagringsindex Kolumnlagringsindexsammanslagning representerar programmet för en sammanslagningsdataström med operatorn Sammanslagning av klustrat index. Operatorn tar bort, uppdaterar eller infogar rader från det klustrade kolumnlagringsindexet som anges i egenskapen Object , som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. Indextypen (Klustrad, Icke-klustrad, Klustrad vy eller Icke-klustrad vy) anges i egenskapen IndexKind i XML-showplan. Den faktiska åtgärden som utförs beror på körvärdet för egenskapen ActionColumn.

Sammanslagning av kolumnlagringsindex är en fysisk operator.
Kolumnlagerindexsökning Operatorn Columnstore Index Scan representerar en genomsökning av kolumnlagringsindexet som anges i egenskapen Object, som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. Genomsökningen sker via den klustrade indexsökningen efter ett grupperat columnstore-index och via operatorn Indexgenomsökning för ett icke-grupperat kolumnlagringsindex. Indextypen (Klustrad, icke-klustrad, vy-klustrad eller vy-icke-klustrad) anges i egenskapen IndexKind i XML-showplanen. När det finns ett valfritt predikat returneras endast de rader som uppfyller predikatet. Egenskapen SeekPredicate är endast tillgänglig för ett partitionerat kolumnlagringsindex och endast likhets- eller ojämlikhetsvillkor. Om den partitionerade kolumnen finns i frågepredikat kan partitionseliminering och radgruppseliminering både minska antalet radgrupper som ska genomsökas.

Columnstore Index Scan är en fysisk operator.
Uppdatering av columnstore-index Operatorn Columnstore Index Update representerar en uppdatering till en eller flera rader i kolumnlagringsindexet som anges i egenskapen Object, som visas i fönstret Egenskaper i de grafiska och XML-showplanerna. Uppdateringar sker via operatorn Clustered Index Update för ett grupperat columnstore-index och via indexuppdateringsoperatorn för ett icke-grupperat kolumnlagringsindex. Indextypen (Klustrad, Icke-klustrad, Vyklustrad eller Vy icke-klustrad) anges i egenskapen IndexKind i XML-showplan. SeekPredicate stöds inte för en columnstore-indexuppdatering. Rader som ska uppdateras läses från en underordnad operator. Om egenskapen SetPredicate finns anges varje uppdaterad kolumn till det här värdet. Om egenskapen DefineValue finns visas de värden som den här operatorn definierar. Dessa värden kan refereras till i SET -satsen eller någon annanstans inom den här operatorn och någon annanstans i den här frågan.

Columnstore Index Update är en fysisk operator.
Beräkningsskalar Operatorn Compute Scalar utvärderar ett uttryck för att skapa ett beräknat skalärt värde. Detta kan sedan returneras till användaren, refereras någon annanstans i frågan eller båda. Ett exempel på båda finns i ett filterpredikat eller kopplingspredikat.

Compute Scalar-operatorer som visas i showplans som genereras av SET STATISTICS XML kanske inte innehåller elementet RunTimeInformation . I grafiska showplans kan Actual Rows, Actual Rebinds och Actual Rewinds saknas i fönstret Egenskaper när alternativet Inkludera faktisk körningsplan har valts i SQL Server Management Studio. När detta inträffar innebär det att även om dessa operatorer användes i den kompilerade frågeplanen, utfördes deras arbete av andra operatorer i körningsfrågeplanen. Antalet körningar i utdata för showplan som genereras av SET STATISTICS PROFILE motsvarar summan av ombindningar och återställningar i showplaner som genereras av SET STATISTICS XML.

Compute Scalar är en logisk och fysisk operator.
Sammanfogning Sammanfogningsoperatorn söker igenom flera indata och returnerar varje rad som genomsöks. Sammanfogning används vanligtvis för att implementera den Transact-SQL UNION ALL konstruktionen. Den fysiska operatorn Sammanfoga har två eller flera indata och en utdata. Sammanfogning kopierar rader från den första indataströmmen till utdataströmmen och upprepar sedan åtgärden för varje ytterligare indataström.

Sammanfogning är en logisk och fysisk operator.
Villkorsstyrd (om och medan) Villkorsoperatorn utför villkorsstyrd bearbetning baserat på en IF eller WHILE -loop. If och While är språkelement.
Konstant genomsökning Operatorn Konstant genomsökning introducerar en eller flera konstanta rader i en fråga. En Compute Scalar-operator används ofta efter en konstant genomsökning för att lägga till kolumner i en rad som skapas av operatorn Konstant genomsökning . Konstant genomsökning kan generera en eller flera rader med noll eller flera kolumner.

Konstant genomsökning är en fysisk operator.
Konvertera Operatorn Konvertera konverterar en skalär datatyp till en annan.

Konvertera är ett språkelement.
Cross Join Operatorn Korskoppling ansluter varje rad från den första (övre) inmatningen med varje rad från den andra (nedre) inmatningen.

Korskoppling är en logisk operator.
Markör Markörens logiska och fysiska operatorer används för att beskriva hur en fråga eller uppdatering som involverar marköroperationer körs. De fysiska operatorerna beskriver den fysiska implementeringsalgoritm som används för att bearbeta markören. till exempel med hjälp av en tangentuppsättningsdriven markör. Varje moment när du kör en kursör involverar en fysisk operator. De logiska operatorerna beskriver en egenskap för markören, till exempel att markören är skrivskyddad.

Logiska operatorer är asynkrona, optimistiska, primära, skrivskyddade, rullningslås, sekundära och synkrona.

Fysiska operatorer inkluderar Dynamic, Fetch Query, Keyset, Population Query, Refresh Query och Snapshot.
Förklara Operatorn Deklarera allokerar en lokal variabel i frågeplanen.

Deklarera är ett språkelement.
Ta bort Operatorn Ta bort tar bort rader (från ett objekt) som uppfyller det valfria predikatet i fönstret Egenskaper .

Ta bort är en logisk operator.
Raderad skanning I utlösare skannar operatorn Raderad skanning den raderade tabellen.

Borttagen sökning är en logisk och fysisk operator.
None Distinkt Operatorn Distinct tar bort dubbletter från en raduppsättning eller från en samling värden.

Distinct är en logisk operator.
None Distinkt sortering Den logiska operatorn Distinct Sort söker igenom indata, tar bort dubbletter och sortering efter de kolumner som anges i distinkt ordning efter predikat i fönstret Egenskaper .

Distinct Sort är en logisk operator.
Distribuera strömmar Operatorn Distribuera strömmar används endast i parallella frågeplaner. Operatorn Distribuera strömmar tar en enda indataström med poster och skapar flera utdataströmmar. Postinnehållet och formatet ändras inte. Varje post från indataströmmen visas i en av utdataströmmarna, såvida inte partitioneringstypen är Broadcast, i vilket fall varje indatarad visas på alla utdataströmmar. Den här operatorn bevarar automatiskt den relativa ordningen för indataposterna i utdataströmmarna. Vanligtvis används hashning för att avgöra vilken utdataström en viss indatapost tillhör.

Om utdata partitioneras innehåller fönstret Egenskaper en predikat för partitionskolumner och partitioneringskolumnerna.

Distribuera strömmar är en logisk operator.
Dynamisk Den dynamiska operatorn använder en markör som kan se alla ändringar som gjorts av andra.

Dynamisk är en fysisk operator.
Eager Spool Operatorn Eager Spool tar hela indata och lagrar varje rad i ett dolt tillfälligt objekt som lagras i tempdb-databasen. Om operatorn återställs (till exempel av en Nested Loops-operator) men ingen ombindning behövs, används de spoolade data i stället för att läsa in data igen. Om det behövs en ombindning tas de buffrade data bort och spoolobjektet återskapas genom att skanna indatan igen. Operatorn Eager Spool skapar sin spoolfil på ett "ivrigt" sätt: när spoolens överordnade operator frågar efter den första raden förbrukar spooloperatorn alla rader från indataoperatorn och lagrar dem i bufferten.

Eager Spool är en logisk operator.
Hämta sökfråga Operatorn 'Fetch Query' hämtar rader när ett fetch-kommando utfärdas mot en markör.

Fetch Query är en fysisk operator.
Filter Filteroperatorn söker igenom indata och returnerar endast de rader som uppfyller filteruttrycket (predikat) som visas i fönstret Egenskaper.
None Distinkt flöde Flow Distinct-operatorn söker igenom indata och tar bort dubbletter. Medan Distinct-operatorn förbrukar alla indata innan utdata skapas, returnerar Flow Distinct-operatorn varje rad som den hämtas från indata (såvida inte den raden är en dubblett, i vilket fall den tas bort).

Flow Distinct är en logisk operator.
Kontroll av främmande nyckelreferenser Operatorn Referenskontroll för sekundärnyckel utför referensintegritetskontroller på plats genom att jämföra den ändrade raden med raderna i de refererande tabellerna för att kontrollera att ändringen inte bryter referensintegriteten. Operatorn Referenskontroll för sekundärnyckel används när det finns fler än 253 sekundärnyckelreferenser på samma primära eller unika nyckel.

Referenskontroll för främmande nyckel är en logisk och fysisk operator.
Fullständig yttre koppling Den logiska operatorn Fullständig yttre koppling returnerar varje rad som uppfyller kopplingspredikatet från den första (övre) indata som är kopplad till varje rad från den andra (nedre) indatan. Den returnerar också rader från:

– Den första indata som inte hade några matchningar i den andra indatan.

– Den andra indata som inte hade några matchningar i den första indatan.

Indata som inte innehåller matchande värden returneras som ett null-värde.

Fullständig yttre koppling är en logisk operator.
Samla strömmar Operatorn Gather Streams används endast i parallella frågeplaner. Operatorn Gather Streams förbrukar flera indataströmmar och skapar en enda utdataström med poster genom att kombinera indataströmmarna. Postinnehållet och formatet ändras inte. Om den här operatorn är ordningsbevarande måste alla indataströmmar vara ordnade. Om utdata sorteras innehåller fönstret Egenskaper en ordning efter predikat och namnen på kolumner som sorteras.

Samla in strömmar är en logisk operator.
Hash-jämförelse Hash Match-operatorn skapar en hash-tabell genom att beräkna ett hash-värde för varje rad från dess build-indata. En hash-predikat , med en lista över kolumner som används för att skapa ett hash-värde, visas i fönstret Egenskaper . För varje avsökningsrad (i förekommande fall) beräknar den sedan ett hash-värde (med samma hash-funktion) och söker i hash-tabellen efter matchningar. Om ett restpredikat finns (visas som Byggrester eller Probrester i Egenskaper-fönstret) måste detta predikat också uppfyllas för att rader ska betraktas som matchande. Beteendet beror på vilken logisk åtgärd som utförs:

– För alla kopplingar, använd första (översta) indata för att skapa hash-tabellen och andra (nedre) indata för att undersöka hash-tabellen. Resultat matchar (eller inte) beroende på kopplingstypen. Om flera kopplingar använder samma kopplingskolumn grupperas dessa åtgärder i ett hash-team.

– För de distinkta operatorerna eller aggregerade operatorerna använder du indata för att skapa hash-tabellen (ta bort dubbletter och beräkna eventuella aggregerade uttryck). När hash-tabellen har skapats, genomsöks tabellen och alla poster matas ut.

– Använd den första indatan för att skapa hash-tabellen (ta bort dubbletter) för union-operatorn. Använd den andra indatan (som inte får ha några dubbletter) för att söka igenom hash-tabellen och returnera alla element som inte har några matchningar, skanna sedan hash-tabellen och returnera alla poster.

Hash Match är en fysisk operator. Mer information finns i Förstå Hash-kopplingar.
Ta bort index Indexborttagningsoperatorn tar bort rader från det icke-klustrade index som anges i Egenskaper-fönstret.

Ta bort index är en fysisk operatör.
Infogning index Operatorn Index Insert infogar rader från dess indata i det icke-klustrade index som anges i Egenskaper-panelen. Fönstret Egenskaper innehåller också ett angivet predikat, vilket anger det värde som varje kolumn har angetts till.

Index Insert är en fysisk operator.
Indexgenomsökning Indexgenomsökningsoperatorn hämtar alla rader från det icke-klustrade index som anges i fönstret Egenskaper. Om ett valfritt predikat visas i fönstret Egenskaper returneras endast de rader som uppfyller predikatet. Om egenskapen Ordnad är True returneras raderna i den ordning som det icke-grupperade indexet har sorterat dem i. Om egenskapen Ordered är False genomsöker Database Engine indexet utan att garantera ordningen på utdata.

Indexgenomsökning är en logisk och fysisk operator.
Indexsökning Indexsökningsoperatorn använder sökförmågan för index för att hämta rader från ett icke-grupperat index. Fönstret Egenskaper innehåller namnet på det icke-klustrade index som används. Den innehåller också sökpredikatet. Databasmotorn använder indexet för att endast bearbeta de rader som uppfyller sökpredikatet. Det kan också innehålla ett where-predikat, som databasmotorn utvärderar mot alla rader som uppfyller sök-predikatet (den använder inte indexen för att göra detta).

Indexsökning är en logisk och fysisk operator.
Index Spool Operatorn Index Spool innehåller ett sökpredikat i fönstret Egenskaper. Index Spool-operatorn söker igenom sina indatarader, placerar en kopia av varje rad i en dold spoolfil (lagras i tempdb-databasen och finns endast under frågans livslängd) och skapar ett index på raderna. På så sätt kan du använda sökfunktionen för index för att endast mata ut de rader som uppfyller sökpredikatet.

Index Spool är en fysisk operator.
Indexuppdatering Den fysiska operatorn IndexUppdatering uppdaterar rader från sitt indata i det icke-klustrade index som anges i fönstret Egenskaper. Om det finns ett angivet predikat anges varje uppdaterad kolumn till det här värdet.

Indexuppdatering är en operator av fysisk typ.
Inre koppling Operatorn Inre koppling returnerar varje rad som uppfyller kopplingspredikatet för den första (översta) inmatningen med den andra (nedre) inmatningen.

Inner Join är en logisk operator.
Infoga Operatorn Infoga infogar varje rad från dess indata i objektet som anges i fönstret Egenskaper. Den fysiska operatorn är antingen operatorn Table Insert, Index Insert eller Clustered Index Insert .

Insert är en logisk operator.
Infogad skanning I triggers genomsöker operatorn Inserted Scan tabellen inserted.

Infogad genomsökning är en logisk och fysisk operator.
Inneboende Operatorn Intrinsic anropar en intern Transact-SQL funktion.

Intrinsic är ett språkelement.
Iterator Iteratorns catchall-ikon visas när logiken som genererar grafiska exekveringsplaner inte kan hitta en lämplig ikon för iteratorn. Catchall-ikonen anger inte nödvändigtvis ett feltillstånd.
Nyckelsökning Nyckelsökningsoperatorn är ett bokmärkesuppslag i en tabell med ett grupperat index eller ett grupperat kolumnlagringsindex. För ett grupperat index innehåller fönstret Egenskaper namnet på det klustrade indexet och den klustringsnyckel som används för att leta upp raden. För ett grupperat columnstore-index tillhandahålls ColStoreLoc i stället för klustringsnyckeln. Nyckelsökning åtföljs alltid av en operator för kapslade loopar . WITH PREFETCH Om klausulen visas i panelen Egenskaper har frågeprocessorn fastställt att det är optimalt att använda asynkron förläsning när bokmärken i det klustrade indexet sökas upp.

Ett nyckeluppslag med ett stort antal körningar i förhållande till tabellstorleken kan ha nytta av att lägga till ett täckande index. Ett lågt antal körningar brukar inte utgöra något prestandaproblem.
Nyckelset Operatorn Keyset använder en markör som kan se uppdateringar, men inte infogningar, som gjorts av andra.

Keyset är en fysisk operator.
Språkelement Catchall-ikonen för språkelementet visas när en lämplig ikon för iteratorn inte kan hittas av logiken som skapar grafiska presentationsplaner. Catchall-ikonen anger inte nödvändigtvis ett feltillstånd.
Lazy Spool Den logiska operatorn Lazy Spool lagrar varje rad från sina indata i ett dolt tillfälligt objekt som lagras i tempdb-databasen. Om operatorn spolas tillbaka (till exempel av en kapslad loopoperator), men ingen ombindning behövs, används de buffrade data istället för att genomsöka indata igen. Om det behövs en ombindning tas de buffrade data bort och spoolobjektet återskapas genom att genomsöka den ombindade indata igen. Lazy Spool-operatorn skapar sin spoolfil på ett "fördröjt" sätt, det vill säga att varje gång spoolens överordnade operator ber om en rad, hämtar spooloperatorn en rad från sin indataoperator och lagrar den i spolen, i stället för att förbruka alla rader samtidigt.

Lazy Spool är en logisk operator.
None Vänster anti-semi sammanfogning Operatorn Left Anti Semi Join returnerar varje rad från den första (översta) inmatningen när det inte finns någon matchande rad i den andra (nedre) inmatningen. Om det inte finns något kopplingspredikat i fönstret Egenskaper är varje rad en matchande rad.

Left Anti Semi Join är en logisk operator.
None Vänster yttre koppling Operatorn Vänster yttre koppling returnerar varje rad som uppfyller kopplingspredikatet för den första (översta) inmatningen med den andra (nedre) inmatningen. Den returnerar även alla rader från den första inmatningen som inte har några matchande rader i den andra inmatningen. De icke-matchande raderna i andra indata returneras som null-värden. Om det inte finns något kopplingspredikat i fönstret Egenskaper är varje rad en matchande rad.

Vänster yttre koppling är en logisk operator.
None Vänster halvkoppling Operatorn Vänster halvkoppling returnerar varje rad från den första (övre) inmatningen när det finns en matchande rad i den andra (nedre) inmatningen. Om det inte finns något kopplingspredikat i fönstret Egenskaper är varje rad en matchande rad.

Vänster halvkoppling är en logisk operator.
Genomsökning av loggrad Loggradsavläsningsoperatören skannar transaktionsloggen.

Loggradsgenomsökning är en logisk och fysisk operator.
Sammanslagningsintervall Operatorn Sammanslagningsintervall sammanfogar flera (potentiellt överlappande) intervall för att skapa minimala intervall som inte överlappar varandra och som sedan används för att söka efter indexposter. Den här operatorn visas vanligtvis före en eller flera Compute Scalar-operatorer över operatorer för konstant genomsökning , som konstruerar de intervall (representeras som kolumner i en rad) som operatorn sammanfogar.

Kopplingsintervall är en logisk och fysisk operator.
Sammanslagningskoppling Sammanfoga-operatorn utför den inre kopplingen, vänster yttre koppling, vänster semi-koppling, vänster anti-semikoppling, höger yttre koppling, höger semi-koppling, höger anti-semikoppling, fullständig yttre koppling, sammanlänkning och logiska unionoperationer.

I fönstret Egenskaper innehåller operatorn Sammanfoga koppling ett sammanfogningspredikat om åtgärden utför en en-till-många-koppling eller ett många-till-många sammanfogningspredikat om åtgärden utför en många-till-många-koppling. Fönstret Egenskaper innehåller också en kommaavgränsad lista över kolumner som används för att utföra åtgärden. Operatorn Merge Join kräver två indata sorterade på sina respektive kolumner, eventuellt genom att infoga explicita sorteringsoperationer i frågeplanen. Kopplingen "sammanslagningskoppling" är särskilt effektiv om explicit sortering inte krävs, till exempel om det finns ett lämpligt B-trädindex i databasen eller om sorteringsordningen kan utnyttjas för flera åtgärder, till exempel en sammanslagningskoppling och gruppering med rullning.

Sammanfogningskoppling är en fysisk operator. Mer information finns i Förstå sammanslagningskopplingar.
Kapslade loopar Operatorn Kapslade loopar utför den inre kopplingen, vänster yttre koppling, vänster halvkoppling och logiska åtgärder för vänster anti-semikoppling.

Kapslade loopkopplingar kör de inre (nedre) indata en gång för varje rad i de yttre (övre) indata. När egenskapen Yttre referenser finns är kopplingen dynamisk: de angivna kolumnvärdena från den yttre raden skickas till de inre indata så att dess operatorer endast returnerar matchande rader. Egenskapen Predikat används inte i det här fallet. När yttre referenser saknas är kopplingen statisk: de inre indata returnerar samma rader vid varje körning, och ett predikat i fönstret Egenskaper avgör vilka kombinationer som kvalificeras som matchningar.

OPTIMIZED När attributet är inställt på Trueändrar operatorn ordning på de yttre indata för att förbättra I/O-orten vid åtkomst till de inre indata. Detta kallas ibland för en optimerad kapslad loopanslutning.

Kapslade loopar är en fysisk operator. Mer information finns i Understanding Nested Loops joins (Förstå kapslade loopar).
None Infoga online-index Operatorn Infoga onlineindex anger att en indexåtgärd (skapa, ändra eller släpp) utförs online. Det vill: underliggande tabelldata förblir tillgängliga för användare under indexåtgärden.

Online Index Insert är en fysisk operator.
Ingen Parallellitet Parallellismoperatorn (eller Exchange Iterator) utför de logiska åtgärderna distribuera strömmar, samla in strömmar och ompartitionera strömmar. Fönstret Egenskaper kan innehålla en partitionskolumn som predikat med en kommaavgränsad lista över de kolumner som partitioneras. Fönstret Egenskaper kan också innehålla en ordning efter predikat, som visar kolumnerna som ska bevara sorteringsordningen för under partitioneringen.

Obs: Om en fråga har kompilerats som en parallell fråga, men vid körning körs den som en seriekörning, innehåller showplanresultat som genereras av SET STATISTICS XML eller med alternativet Inkludera faktisk körningsplan i SQL Server Management Studio inte elementet RunTimeInformation för Parallellism-operatorn. I SET STATISTICS PROFILE utdata visas att det faktiska antalet rader och det faktiska antalet körningar är noll för Parallelism-operatorn. När något av villkoren inträffar innebär det att parallellitetsoperatorn endast användes under frågekompilering och inte i körningsfrågeplanen. Ibland körs parallella frågeplaner i serie om det finns en hög samtidig belastning på servern.

Parallelism är en fysisk operator. Mer information om parallellitetsoperatorn finns i Parallellitetsoperatorn.
Genomsökning av parametertabell Operatorn Parameter Table Scan läser den interna raduppsättningen som skapas under en INSERT ... EXEC instruktion. Den här raduppsättningen innehåller utdata från den körda modulen, till exempel en lagrad procedur eller en dynamisk SQL-batch, när dessa resultat infogas i en tabell, en tillfällig tabell eller en tabellvariabel.

Parametertabellsökning är en logisk och fysisk operator.
None Partiell aggregering Partiell aggregering används vanligtvis i parallella planer. Den tillämpar en aggregeringsfunktion på så många indatarader som möjligt så att det inte behövs att skriva till disk (kallas "spill"). Hash-matchning är den enda fysiska operatorn (iterator) som implementerar partiell aggregering.

Partiell aggregering är en logisk operator.
Befolkningsfråga Operatorn Population Query fyller i arbetstabellen för en markör när markören öppnas.

Population Query är en fysisk operator.
Lägga Put-operatorn infogar data i en extern tabell (PolyBase). Till skillnad från andra insert-operatorer returnerar Put inga rader till den överordnade operatorn. I SQL Server 2016 (13.x) till och med SQL Server 2019 (15.x) riktar sig operatorn Put mot Hadoop och körs i radläge. I SQL Server 2022 (16.x) och senare versioner riktar sig operatören Put till Azure Storage eller S3-kompatibel lagring och körs i batchläge. Mer information finns i SKAPA EXTERN TABELL SOM SELECT (CETAS).

Put är en fysisk operator.

Gäller för: SQL Server 2016 (13.x) och senare versioner.
Uppdatera fråga Operatorn Uppdatera fråga hämtar aktuella data för rader i hämtningsbufferten.

Uppdateringsfråga är en fysisk operator.
Fjärrborttagning Operatorn Fjärrborttagning tar bort indataraderna från ett fjärrobjekt.

Fjärrborttagning är en logisk och fysisk operator.
Fjärrindexsökning Operatorn Fjärrindexsökning söker igenom fjärrindexet som anges i fönstret Egenskaper.

Fjärrindexsökning är en logisk och fysisk operator.
Fjärrindexsökning Operatorn Fjärrindexsökning använder sökförmågan för ett fjärrindexobjekt för att hämta rader. Fönstret Egenskaper innehåller namnet på fjärrindexet som används och sökpredikatet.

Fjärrindexsökning är en logisk och fysisk operator.
Fjärrinfogning Operatorn Fjärrinfogning infogar indataraderna i ett fjärrobjekt.

Remote Insert är en logisk och fysisk operator.
Fjärrfråga Fjärrfrågasoperatorn skickar en fråga till en fjärrkälla. Texten i frågan som skickas till fjärrservern visas i fönstret Egenskaper .

Fjärrfråga är en logisk och fysisk operator.
Fjärrgenomsökning Fjärrskanningsoperatorn söker igenom ett fjärrobjekt. Namnet på fjärrobjektet visas i fönstret Egenskaper .

Fjärrgenomsökning är en logisk och fysisk operator.
Fjärruppdatering Fjärruppdateringsoperatorn uppdaterar indataraderna i ett fjärrobjekt.

Fjärruppdatering är en logisk och fysisk operator.
Ompartitionera strömmar Operatorn Repartition Streams (eller exchange iterator) förbrukar flera strömmar och genererar flera dataströmmar med poster. Postinnehållet och formatet ändras inte. Om frågeoptimeraren använder ett bitmappsfilter minskas antalet rader i utdataströmmen. Varje post från en indataström placeras i en utdataström. Om den här operatorn är orderbevarande måste alla indataströmmar sorteras och sammanfogas till flera ordnade utdataströmmar. Om utdata partitioneras innehåller fönstret Egenskaper en predikat för partitionskolumner och partitioneringskolumnerna. Om utdata sorteras innehåller fönstret Egenskaper en ordning efter predikat och kolumnerna som sorteras. Operatorn används endast i parallella frågeplaner.

Ompartitionsströmmar är en logisk operator.
resultat Resultatoperatorn är de data som returneras i slutet av en frågeplan. Detta är vanligtvis rotelementet i en showplan.

Resultatet är ett språkelement.
RID-sökning RID-uppslag är en bokmärkesuppslagning på en heap med hjälp av en angiven radidentifierare (RID). Fönstret Egenskaper innehåller den bokmärkesetikett som används för att leta upp raden i tabellen och namnet på tabellen där raden slås upp. RID-sökning åtföljs alltid av en kapslad loopoperator .

RID-sökning är en fysisk operator. Mer information om bokmärkessökningar finns i Read Committed och bokmärkessökning.
None Höger anti semi sammanfogning Operatorn Right Anti Semi Join matar ut varje rad från den andra (nedre) indatan när det inte finns någon matchande rad i den första (översta) indatan. En matchande rad definieras som en rad som uppfyller predikatet i fönstret Egenskaper (om det inte finns något predikat är varje rad en matchande rad).

Right Anti Semi Join är en logisk operator.
None Höger yttre koppling Höger yttre kopplingsoperatorn returnerar varje rad som uppfyller kopplingen för den andra (nedre) indata med varje matchande rad från den första (översta) indata. Den returnerar också alla rader från den andra inmatningen som inte hade några matchande rader i den första inmatningen, sammanslagna med NULL. Om det inte finns något kopplingspredikat i fönstret Egenskaper är varje rad en matchande rad.

Höger yttre koppling är en logisk operator.
None Höger semijoin Operatorn Höger halvkoppling returnerar varje rad från den andra (nedre) inmatningen när det finns en matchande rad i den första (översta) inmatningen. Om det inte finns något kopplingspredikat i fönstret Egenskaper är varje rad en matchande rad.

Höger halvkoppling är en logisk operator.
Radantalbuffert Operatorn Radantalspool söker igenom indata, räknar hur många rader som finns och returnerar samma antal rader utan några data i dem. Den här operatorn används när det är viktigt att kontrollera om det finns rader i stället för de data som finns i raderna. Om en operator för kapslade loopar till exempel utför en vänster semijoin och kopplingspredikatet gäller för inre indata, kan en radräkningspool placeras överst på de interna indata för operatorn Kapslade loopar. Sedan kan operatorn Kapslade loopar avgöra hur många rader som matas ut av radantalspoolen (eftersom faktiska data från den inre sidan inte behövs) för att avgöra om den yttre raden ska returneras.

Radantalspool är en fysisk operator.
None Omfördelning av segment I en parallell frågeplan finns det ibland konceptuella regioner med iteratorer. Alla iteratorer i en sådan region kan köras på parallella trådar. Själva regionerna måste köras seriellt. Några av parallellism-iteratorerna i en enskild region kallas Förgreningspartition. Parallellism-iteratorn vid gränsen för två sådana regioner kallas Segmentrepartition.

Ompartition av gren och segmentpartition är logiska operatorer.
Segment Segmentoperatorn delar indatauppsättningen i segment baserat på värdet för en eller flera kolumner. Dessa kolumner visas som argument i segmentoperatorn . Indata sorteras efter dessa kolumner. Operatorn använder segmentkolumnen för att markera den första raden i varje segment.

Segment är en fysisk och logisk operator.
Sekvensprojekt Operatorn Sekvensprojekt lägger till kolumner för att utföra beräkningar över en ordnad uppsättning. Det kräver att indatauppsättningen delas upp i segment baserat på värdet för en eller flera kolumner.

Sekvensprojektet är en logisk och fysisk operator.
Sekvens Sekvensoperatorn kör varje indata i sekvens (uppifrån och ned) och returnerar endast de rader som kommer från dess sista (nedre) indata. Vanliga användningsområden är omfattande uppdateringsplaner (där varje indata vanligtvis är en uppdatering av ett annat objekt), frågor som använder flera uttalande tabellvärdesfunktioner och frågor som använder SHORTEST_PATH på en graftabell.

Sekvens är en logisk och fysisk operator.
Ögonblicksbild Operatorn Ögonblicksbild skapar en markör som inte ser ändringar som gjorts av andra.

Snapshot är en fysisk operator.
Sort Sorteringsoperatorn sorterar alla inkommande rader. Fönstret Egenskaper innehåller antingen en distinkt ordning efter predikat om dubbletter tas bort av den här åtgärden, eller en ordning efter predikat med en kommaavgränsad lista över kolumnerna som sorteras. Kolumnerna prefixeras med värdet ASC om kolumnerna sorteras i stigande ordning eller värdet DESC om kolumnerna sorteras i fallande ordning.

Sortering är en logisk och fysisk operator.
Dela Operatorn Split används för att optimera uppdateringsbearbetningen. Varje uppdateringsåtgärd delas upp i en borttagning och en infogningsåtgärd.

Delning är en logisk och fysisk operator.
Spool Spooloperatorn sparar ett mellanliggande frågeresultat i tempdb-databasen.
Strömaggregat Stream Aggregate-operatorn grupperar rader efter en eller flera kolumner och beräknar sedan ett eller flera aggregeringsuttryck som returneras av frågan. Stream Aggregate-operatorn kräver indata som sorteras av kolumnerna i dess grupper. Optimeraren använder en sorteringsoperator före den här operatorn om data inte redan sorteras på grund av en tidigare sorteringsoperator eller på grund av en ordnad indexsökning eller genomsökning. I instruktionen SHOWPLAN_ALL eller den grafiska körningsplanen i SQL Server Management Studio visas kolumnerna i gruppen efter predikat i fönstret Egenskaper och de aggregerade uttrycken visas i kolumnen Definierade värden .

Stream Aggregate är en fysisk operator.
Strömbrytare Switch är en särskild typ av sammanlänkningsiterator som har n indata. Ett uttryck är associerat med varje Switch-operator . Beroende på returvärdet för uttrycket (mellan 0 och n-1) kör Switch lämpliga indata och returnerar dess rader. Switch används för att implementera sökvägar för INSERT INTO uttryck mot partitionerade vyer. Den används också för att implementera frågeplaner som involverar snabbframåtkursorer med vissa operatorer, till exempel operatorn TOP.

Växeln är en logisk och fysisk operator.
Ta bort tabell Operatorn Ta bort tabell tar bort rader från tabellen som anges i fönstret Egenskaper i frågekörningsplanen.

Table Delete är en fysisk operator.
Infoga tabell Operatorn Tabellinfogning infogar rader från sina indata i tabellen som anges i fönstret Egenskaper i frågekörningsplanen. Fönstret Egenskaper innehåller också ett angivet predikat, vilket anger det värde som varje kolumn har angetts till. Om Tabellinfogning inte har några underordnade värden för infogade värden tas raden som infogas från själva Insert-operatorn.

Table Insert är en fysisk operator.
Sammanslagning av tabell Operatorn Table Merge tillämpar en sammanslagningsdatastream på en heap. Operatorn tar bort, uppdaterar eller infogar rader i tabellen som anges i fönstret Egenskaper för operatorn. Den faktiska åtgärden som utförs beror på körvärdet för egenskapen ActionColumn

Tabellsammanslagning är en fysisk operator.
Tabellgenomsökning Operatorn Tabellgenomsökning hämtar alla rader från tabellen som anges i fönstret Egenskaper i frågekörningsplanen. Om ett predikat visas i fönstret Egenskaper returneras endast de rader som uppfyller predikatet.

Tabellgenomsökning är en logisk och fysisk operator.
Table Spool Operatorn Table Spool söker igenom indata och placerar en kopia av varje rad i en dold spooltabell som lagras i tempdb-databasen och som endast finns under frågans livslängd. Om operatorn spolas tillbaka (till exempel av en kapslad loopoperator), men ingen ombindning behövs, används i så fall de spolade data i stället för att genomsöka indataströmmen igen.

Table Spool är en fysisk operator.
Tabelluppdatering Tabelluppdateringsoperatorn uppdaterar indatarader i den tabell som anges i Egenskaper-panelen i frågekörningsplanen. Set-predikatet avgör värdet för varje uppdaterad kolumn. Dessa värden kan refereras till i SET -satsen eller någon annanstans inom den här operatorn och någon annanstans i den här frågan.

Tabelluppdatering är en fysisk operator.
Tabellvärdesfunktion Operatorn Tabellvärdesfunktion utvärderar en tabellvärdesfunktion (antingen Transact-SQL eller CLR) och lagrar de resulterande raderna i tempdb-databasen. När de överordnade iteratorerna begär raderna returnerar Tabellvärdesfunktionen raderna från tempdb.

Frågor med anrop till tabellvärdesfunktioner genererar frågeplaner med iteratorn Table-valued Function . Tabellvärdesfunktionen kan utvärderas med olika parametervärden:

- Tabellvärdesfunktionens XML-läsare matar in en XML-BLOB som en parameter och skapar en raduppsättning som representerar XML-noder i XML-dokumentordning. Andra indataparametrar kan begränsa XML-noder som returneras till en delmängd av XML-dokument.

- Tabellvärdesfunktionens XML-läsare med XPath-filter är en särskild typ av TABELLvärdesfunktion för XML-läsare som begränsar utdata till XML-noder som uppfyller ett XPath-uttryck.

Tabellvärdesfunktion är en logisk och fysisk operator.
Topp Operatorn Top söker igenom indata och returnerar endast det första angivna antalet eller procenten av raderna, eventuellt baserat på en sorteringsordning. Fönstret Egenskaper kan innehålla en lista över de kolumner som kontrolleras för likheter. I uppdateringsplaner används operatorn Top för att framtvinga radantalsgränser.

Top är en logisk och fysisk operator.
None Topp N sortering Top N Sort liknar sorterings iteratorn, förutom att endast de första N raderna behövs och inte hela resultatuppsättningen. För små värden för N försöker SQL Server-frågekörningsmotorn utföra hela sorteringsåtgärden i minnet. För stora värden för N använder frågekörningsmotorn den mer generiska sorteringsmetoden som N inte är en parameter till.
UDX Extended Operators (UDX) implementerar en av många XQuery- och XPath-åtgärder i SQL Server.

– Den utökade operatorn (UDX) FOR XML används för att serialisera relationsradsuppsättningen som den matar in i XML-representation i en enda BLOB-kolumn på en enda utdatarad. Det är en orderkänslig XML-aggregeringsoperator.

– Utökad operator (UDX) XML SERIALIZER är en orderkänslig XML-aggregeringsoperator. Den matar in rader som representerar XML-noder eller XQuery-skalärer i XML-dokumentordning och skapar en serialiserad XML-BLOB i en enda XML-kolumn på en enda utdatarad.

– Den utökade operatorn (UDX) XML FRAGMENT SERIALIZER är en särskild typ av XML SERIALIZER som används för bearbetning av indatarader som representerar XML-fragment som infogas i XQuery infogningsmodifikationsutvidgningen.

– Den utökade operatorn (UDX) XQUERY STRING utvärderar XQuery-strängvärdet för indatarader som representerar XML-noder. Det är en ordningskänslig strängaggregeringsoperator. Den matar ut en rad med kolumner som representerar XQuery-skalären som innehåller strängvärdet för indata.

– Utökad operator (UDX) XQUERY LIST DECOMPOSER är en XQuery-listdekompositionsoperator. För varje indatarad som representerar en XML-nod genererar den en eller flera rader som var och en representerar XQuery-skalär som innehåller ett listelementvärde om indata är av XSD-listtyp.

– Den utökade operatorn (UDX) XQUERY DATA utvärderar funktionen XQuery fn:data() på indata som representerar XML-noder. Det är en ordningskänslig strängaggregeringsoperator. Den matar ut en rad med kolumner som representerar XQuery-skalär som innehåller resultatet av fn:data().

– Den utökade operatorn XQUERY CONTAINS utvärderar funktionen XQuery fn:contains() på indata som representerar XML-noder. Det är en ordningskänslig strängaggregeringsoperator. Den matar ut en rad med kolumner som representerar XQuery-skalär som innehåller resultatet av fn:contains().

– Den utökade operatorn UPDATE XML NODE uppdaterar XML-noden i tillägget XQuery replace data modification i modify() metoden för XML-typ.

UDX-operatorer är både logiska och fysiska operatorer.
Union Union-operatorn söker igenom flera indata, matar ut varje rad som genomsöks och tar bort dubbletter.

Union är en logisk operator.
Update Uppdateringsoperatorn uppdaterar varje rad från indata i objektet som anges i fönstret Egenskaper i frågekörningsplanen.

Uppdatering är en logisk operator. Den fysiska operatorn är Table Update, Index Update, Clustered Index Update eller Columnstore Index Update.
None Fönsteraggregering Operatorn Window Aggregate utvärderar ett eller flera aggregerade uttryck med en fönsterdefinition och lägger till deras resultat i dataströmmen.

Window Aggregate är en logisk och fysisk operator.
Fönsterspole Operatorn Window Spool expanderar varje rad till den uppsättning rader som representerar det fönster som är associerat med den. I en fråga OVER definierar -satsen fönstret i en frågeresultatuppsättning och en fönsterfunktion beräknar sedan ett värde för varje rad i fönstret. Operatorn lagrar alla indatarader i en dold arbetstabell i tempdb-databasen eller i minnet.

Window Spool är en logisk och fysisk operator.

Anmärkning

I dokumentationen används termen B-träd vanligtvis som referens till index. I radlagringsindex implementerar databasmotorn ett B+-träd. Detta gäller inte för kolumnlagringsindex eller index i minnesoptimerade tabeller. Mer information finns i arkitekturen och designguiden för SQL Server och Azure SQL-index.