Справочник по оператору логического и физического шоуплана

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр Azure SQLБаза данных SQL в Microsoft Fabric

Операторы описывают, как SQL Server Database Engine выполняет запрос. Оптимизатор запросов использует операторы для создания плана запроса для создания результата или выполнения операции, указанной в запросе. План запроса — это дерево физических операторов. Самый левый оператор является корнем, который управляет общим процессом выполнения. Для оператора SELECT корень обычно возвращает результирующий набор клиенту. Для инструкций модификации данных (INSERT, UPDATE, DELETE, MERGE) или таких инструкций, как SELECT...INTO, инициатор производит модификацию и результат может не содержать строки. Операторы без входных данных в правом углу дерева — это конечные узлы, которые обычно считывают данные из хранилища. Промежуточные операторы преобразуют, фильтруют или присоединяют данные по мере их прохождения справа налево через план.

План запроса можно просмотреть с помощью SET SHOWPLAN инструкций, параметров графического плана выполнения в среде SQL Server Management Studio или событий плана показа расширенных событий.

Типы операторов

Операторы классифицируются как логические и физические.

Логические операторы

Логические операторы описывают реляционную алгебраическую операцию, используемую для обработки запроса. Другими словами, логические операторы описывают на концептуальном уровне, какие действия следует совершить.

Физические операторы

Физические операторы реализуют действия, описанные логическими операторами. Каждый физический оператор является объектом или процедурой, выполняющей операцию. Например, некоторые физические операторы обращаются к столбцам и строкам таблицы, индекса или представления. Другие физические операторы выполняют такие операции, как вычисления, агрегации, проверки целостности данных или соединения. Физические операторы имеют связанные с ними затраты.

Физические операторы производят инициализацию, собирают данные и закрываются. Если формулировать более конкретно, физический оператор может ответить на вызов трех следующих методов.

  • Open() Open(): метод приводит к инициализации физического оператора и настройке всех необходимых структур данных. Хотя физический оператор может принимать много Open() вызовов, обычно он получает только один.

  • GetRow() GetRow(): метод приводит к тому, что физический оператор получает первую или последующую строку данных. Физический оператор может получать ноль или много GetRow() вызовов.

  • Close() Close(): метод приводит к тому, что физический оператор выполняет некоторые операции очистки и завершает работу. Физический оператор получает только один вызов \Close(), но вызов \Close() не всегда гарантирован.

Метод GetRow() возвращает одну строку данных, а количество вызовов метода отображается как ActualRows в выходных данных плана выполнения, создаваемых графическим и XML планом выполнения. Дополнительные сведения об этих SET параметрах см. в разделе SET STATISTICS PROFILE and SET STATISTICS XML.

Элементы языка

Некоторые операторы в плане запроса представляют элементы Transact-SQL language а не реляционные операции. К ним относятся такие конструкции, как назначение переменных, преобразование типов и поток управления (IF/WHILE). Элементы языка не классифицируются как логические или физические операторы.

Повторная привязка, перемотка и завершение сканирования

Следующие счетчики отображаются в результатах showplan и помогают определить, как часто оператор выполняется повторно.

Счетчики ActualRebinds и ActualRewinds, отображаемые в результатах вывода showplan, относятся к количеству вызовов метода Open(). Если оператор не находится на внутренней стороне соединения вложенных циклов, ActualRebinds равно одному, и ActualRewinds равно нулю. Если оператор находится на внутренней стороне соединения цикла, общее число перестроек и перемоток должно совпадать с количеством строк, обработанных на внешней стороне соединения. Повторная привязка означает, что изменился один или несколько связанных параметров соединения, и внутреннюю сторону необходимо пересчитать. Перемотка означает, что ни один из коррелированных параметров не изменился, а предыдущий внутренний результирующий набор может использоваться повторно.

Фактические повторные привязки (ActualRebinds) и фактические перемотки (ActualRewinds) присутствуют в выходных данных XML-шоуплана, созданных с использованием SET STATISTICS XML ON и графического шоуплана. Они заполняются для таких операторов, как индексный Spool, удалённый запрос, число строк Spool, сортировка, табличный Spool и функция с табличным значением. ActualRebinds и ActualRewinds также могут быть заполнены для таких операторов, как Assert и Filter, если для атрибута StartupExpression задано значение TRUE.

Если ActualRebinds и ActualRewinds присутствуют в XML-плане, они сравнимы с EstimateRebinds и EstimateRewinds. Если они отсутствуют, предполагаемое количество строк (EstimateRows) сравнимо с фактическим числом строк (ActualRows). Фактический графический вывод showplan отображает нули для фактических перевязок и перемоток, когда они отсутствуют.

Связанный счетчик ActualEndOfScans доступен в XML и графическом плане выполнения. Когда физический оператор достигает конца потока данных, этот счетчик увеличивается на один. Физический оператор может достигать конца своего потока данных ни разу, один или несколько раз. Как и при повторной привязке и перемотках, счётчик завершения сканирования может превышать единицу, только если оператор находится на внутренней стороне циклического соединения. Количество завершенных сканирований должно быть меньше или равно сумме количества перебиндовок и перемоток.

Как оптимизатор запросов сопоставляет логические и физические операторы

Оптимизатор запросов создает план запроса в виде дерева логических операторов. После создания плана оптимизатор запросов выбирает физический оператор для каждого логического оператора. Оптимизатор запросов использует подход на основе затрат , чтобы определить, какой физический оператор реализует логический оператор.

Обычно логическую операцию можно реализовать с помощью нескольких физических операторов. Однако в редких случаях физический оператор может реализовывать несколько логических операций.

выполнение в пакетном режиме.

Выполнение в пакетном режиме — это метод обработки запросов, используемый для обработки нескольких строк вместе (то есть в пакете), вместо обработки по одной строке за раз. Обработка в пакетном режиме использует алгоритмы, оптимизированные для многоядерных ЦП и увеличивая пропускную способность памяти на современном оборудовании. Пакетный режим можно использовать набором операторов для объектов rowstore и columnstore. Для получения дополнительной информации см. Руководство по архитектуре обработки запросов.

Чтение плана выполнения

В графическом плане исполнения стрелки направлены справа налево, что обозначает поток данных. Во время выполнения это работает в противоположном направлении: операторы работают по принципу вытягивания и выполняют работу только при запросе данных.

Корневой оператор вызывает GetRow() свой ​​дочерний объект, который вызывает собственные дочерние элементы, пока конечный узел не считывает строку из хранилища и поднимает её вверх по цепочке. Сканирование кластеризованного индекса под оператором Top, например, не сканирует всю таблицу. Проверка останавливается, как только Top имеет достаточно строк. В пакетном режиме каждый вызов возвращает пакет строк вместо одной строки. Оба направления чтения полезны: справа налево показано, какие данные передаются в каждый оператор, а слева направо показывается, какой оператор определяет процесс.

Описания операторов

Этот раздел содержит описания логических и физических операторов. Свойства планов запросов и операторов можно просмотреть с помощью области свойств в представлении плана запросов SQL Server Management Studio (SSMS).

Совет

Каждый раз, когда у заданного графического значка плана выполнения есть желтый круг с двумя стрелками вправо налево, это означает, что оператор выполнялся параллельно. Дополнительные сведения о параллелизме см. в статье Руководство по архитектуре потоков и задач.

Иконка Оператор «Showplan» Описание
Адаптивное соединение Оператор Adaptive Join позволяет отложить выбор метода хэш-соединения или соединения вложенными циклами до завершения сканирования первых входных данных.

Адаптивное соединение — это физический оператор. Дополнительные сведения см. в разделе Основные сведения об адаптивных соединениях.
Агрегат Оператор Агрегата вычисляет выражения, содержащие одну или несколько агрегатных функций.

Агрегат — это логический оператор. Его можно реализовать оператором Stream Aggregate, Hash Match, Window Aggregate или UserDefinedAggregate (CLR).
Арифметическое выражение Оператор Arithmetic Expression вычисляет новое значение на основе существующих значений в строке. Арифметическое выражение не используется в более новых версиях SQL Server.
Assert Оператор Assert проверяет условие. Например, этот оператор проверяет целостность ссылок или гарантирует, что скалярный вложенный запрос возвращает одну строку. Для каждой входной строки оператор Assert оценивает выражение в области свойств плана выполнения. Если это выражение оценивается как NULL, строка передается через Оператор Assert, и выполнение запроса продолжается. Если это выражение оценивается как ненулевое значение, возникает соответствующая ошибка.

Assert — это физический оператор.
Назначение Оператор Assign присваивает переменной значение выражения или константы.

Assign является элементом языка.
нет Async Concat Оператор Async Concat применяется только в удаленных запросах (распределенных запросах). Он имеет n дочерних узлов и один родительский узел. Обычно некоторые дочерние узлы являются удаленными компьютерами, участвующими в распределенном запросе. Async Concat вызывает вызовы ко всем дочерним узлам одновременно, а затем применяет битовую карту к каждому из них. Для каждого бита, который является элементом 1, Async Concat отправляет выходные строки на родительский узел по запросу.

Async Concat — это физический оператор.
Пакетное построение хэш-таблицы Оператор пакетной сборки хэш-таблицы создает пакетную хэш-таблицу для колонкового индекса, оптимизированного для памяти.

Применимо только к: только SQL Server 2012 (11.x).
Bitmap SQL Server использует оператор Bitmap для реализации фильтрации растровых карт в параллельных планах запросов. Фильтрация растровых карт ускоряет обработку запросов, устраняя строки со значениями ключей, которые не могут создавать записи соединения перед передачей строк другим оператором, таким как оператор Parallelism . Фильтр по битовым картам использует компактное представление набора значений из таблицы, находящейся в одной части дерева операторов, для фильтрации строк из другой таблицы, находящейся в другой части дерева. Если сразу удалять ненужные строки в запросе, последующие операторы работают с меньшим количеством строк, тем самым повышая общую производительность. Оптимизатор определяет, достаточно ли избирательна битовая карта, чтобы быть полезной, и в каких операторах применить фильтр.

Bitmap является физическим оператором.
Создание растрового рисунка Оператор Bitmap Create появляется в выводе showplan, где создаются битовые карты.

Bitmap Create является логическим оператором.
нет Репартиция ветви В плане параллельных запросов иногда содержатся концептуальные области итераторов. Все итераторы в такой области могут работать в параллельных потоках. Сами регионы должны выполняться последовательно. Некоторые итераторы оператора Parallelism внутри отдельной области называются Branch Repartition. Итератор Parallelism на границе двух таких областей называется Segment Repartition.

Branch Repartition и Segment Repartition являются логическими операторами.
Broadcast У Broadcast один дочерний узел и n родительских узлов. Broadcast рассылает эти входные строки нескольким получателям в соответствии с потребностями. Каждый пользователь получает полный набор строк. Например, если все потребители являются сторонами хэш-соединения, то создаются n копий хэш-таблиц.

Broadcast является логическим оператором.
Удаление кластеризованного индекса Оператор Clustered Index Delete удаляет строки из кластеризованного индекса, указанного в свойстве Object, которое указано в панели свойств графических и XML-шоупланов. Если элемент SeekPredicate или Predicate присутствует, удаляются только те строки, которые удовлетворяют предикату.

Примечание: Свойство Object может перечислять дополнительные некластеризованные индексы, которые оператор изменяет одновременно с кластеризованным индексом.

Clustered Index Delete — это физический оператор.
Вставка кластеризованного индекса Оператор "Вставка кластеризованного индекса" вставляет строки из входных данных в кластеризованный индекс, указанный в свойстве Object , указанном в области свойств графических и XML-шоупланов. XML Showplan включает свойства SetPredicate и ColumnReference, которые можно использовать для определения значения, задаваемого для каждого столбца. Если у Clustered Index Insert нет дочерних элементов для вставки значений, то строка вставляется из самого оператора Insert.

Примечание: Свойство Object может перечислять дополнительные некластеризованные индексы, которые оператор изменяет одновременно с кластеризованным индексом.

Кластеризованная вставка индекса — это физический оператор.
Объединение кластеризованных индексов Оператор Clustered Index Merge применяет поток данных слияния к кластеризованному индексу. Оператор удаляет, обновляет или вставляет строки из кластеризованного индекса, указанного в свойстве Object , в области свойств графического и XML-шоуплана. Фактическая операция зависит от значения свойства ActionColumn во время выполнения.

Примечание: Свойство Object может перечислять дополнительные некластеризованные индексы, которые оператор изменяет одновременно с кластеризованным индексом.

Clustered Index Merge является физическим оператором.
Проверка кластеризованного индекса Оператор clustered Index Scan сканирует кластеризованный индекс, указанный в свойстве object , указанном в области свойств графических и XML-шоупланов. При наличии необязательного предиката возвращаются только те строки, которые удовлетворяют предикату. Если свойство Order в области свойств или XML showplan имеет значение True, обработчик запросов определил, что строки должны быть возвращены в том порядке, в котором кластеризованный индекс сортировал их. Если свойство Ordered равно False, ядро СУБД сканирует индекс, не гарантируя порядок выходных данных. Свойство SeekPredicate доступно только для секционированного кластеризованного индекса.

Clustered Index Scan является логическим и физическим оператором.
Поиск кластеризованных индексов Оператор Clustered Index Seek использует поисковые возможности индексов для получения строк из кластеризованного индекса. Свойство Object , указанное в области свойств графического и XML-шоупланов, содержит имя используемого кластеризованного индекса. Метод SeekPredicate содержит предикат для поиска. Ядро СУБД использует индекс для обработки только тех строк, которые удовлетворяют SeekPredicate. Он также может включать свойство Предиката, при котором ядро СУБД выполняет оценку всех строк, удовлетворяющих SeekPredicate. Это необязательно, и для выполнения этого процесса индексы не используются. Свойство "Упорядочено " обычно имеет значение True для этого оператора.

Clustered Index Seek — это логический и физический оператор.
Обновление кластеризованного индекса Оператор clustered Index Update обновляет входные строки в кластеризованном индексе, указанном в свойстве object , указанном в области свойств графических и XML-шоупланов. Если свойство Predicate присутствует, обновляются только те строки, которые удовлетворяют этому предикату. Если свойство SetPredicate присутствует, для каждого обновленного столбца задано это значение. Если свойство DefineValue присутствует, указаны значения, которые определяет этот оператор. Эти значения могут ссылаться в предложении SET или в другом месте этого оператора и в другом месте в этом запросе.

Примечание: Свойство Object может перечислять дополнительные некластеризованные индексы, которые оператор изменяет одновременно с кластеризованным индексом.

Clustered Index Update является логическим и физическим оператором.
Свернуть Оператор Collapse оптимизирует процедуру обновления. Когда выполняется обновление, оно может быть разбито (с помощью оператора Split) на удаление и вставку. Область свойств содержит группу по предикату, указывающую список ключевых столбцов. Если обработчик запросов встречает смежные строки, которые удаляют и вставляют те же значения ключей, они заменяют эти отдельные операции одной, более эффективной операцией обновления.

Collapse является логическим и физическим оператором.
Удаление индекса Columnstore Оператор Columnstore Index Delete осуществляет удаление строк из указанного в свойстве Object индекса колонкостора, который приведен в области свойств графического и XML-шоупланов. Удаление для кластеризованного columnstore индекса происходит с помощью Clustered Index Delete, а для некластеризованного columnstore индекса - с помощью оператора Index Delete. Тип индекса (Clustered, NonClustered, ViewClustered или ViewNonClustered) указывается в свойстве IndexKind в xml-шоуплане. Метод SeekPredicate не поддерживается для удаления индекса Columnstore. Строки для удаления считываются из дочернего оператора.

Columnstore Index Delete — это физический оператор.
Вставка индекса Columnstore Оператор «Вставка колонночного индекса» представляет вставку строк из входных данных в колонночный индекс, указанный в свойстве Object, в панели свойств графических и XML-шоупланов. Вставка происходит с помощью оператора Clustered Index Insert для кластеризованного columnstore индекса и с помощью оператора Index Insert для некластеризованного columnstore индекса. Тип индекса (Clustered, NonClustered, ViewClustered или ViewNonClustered) указывается в свойстве IndexKind в xml-шоуплане. XML Showplan включает свойства SetPredicate и ColumnReference, которые можно использовать для определения значения, задаваемого для каждого столбца.

Columnstore Index Insert — это физический оператор.
Слияние индекса Columnstore Слияние индекса Columnstore характеризуется использованием потока данных слияния с помощью оператора Clustered Index Merge. Оператор удаляет, обновляет или вставляет строки из кластеризованного индекса columnstore, который указан в свойстве Object, перечисленном в панели Свойства графических и XML-шоупланов. Тип индекса (Clustered, NonClustered, ViewClustered или ViewNonClustered) указывается в свойстве IndexKind в xml-шоуплане. Фактически выполняемая операция зависит от значения свойства ActionColumn во время выполнения.

Слияние индекса Columnstore — это физический оператор.
Сканирование индекса Columnstore Оператор проверки индекса Columnstore представляет проверку индекса columnstore, указанного в свойстве object , указанного в области свойств графических и XML-шоупланов. Проверка выполняется с помощью операции сканирования кластеризованного индексного столбца для кластеризованного индекса columnstore и с помощью оператора сканирования для некластеризованного индекса columnstore. Тип индекса (Clustered, NonClustered, ViewClustered или ViewNonClustered) указывается в свойстве IndexKind в xml-шоуплане. При наличии необязательного предиката возвращаются только те строки, которые удовлетворяют предикату. Свойство SeekPredicate доступно только для секционированного колоночного индекса и только для условий равенства или неравенства. Если секционированные столбцы указаны в предикате запроса, исключение секций и ликвидация группы строк могут уменьшить количество групп строк для сканирования.

Columnstore Index Scan — это физический оператор.
Обновление индекса Columnstore Оператор обновления индекса Columnstore представляет обновление до одной или нескольких строк в индексе columnstore, указанном в свойстве Object , указанном в области свойств графических и XML-шоупланов. Обновления происходят через оператор обновления кластеризованного индекса для кластеризованного индекса columnstore и с помощью оператора обновления индекса для некластеризованного индекса columnstore. Тип индекса (Clustered, NonClustered, ViewClustered или ViewNonClustered) указывается в свойстве IndexKind в xml-шоуплане. Метод SeekPredicate не поддерживается для обновления индекса Columnstore. Обновляемые строки считываются из подчиненного оператора. Если свойство SetPredicate присутствует, для каждого обновленного столбца задано это значение. Если свойство DefineValue присутствует, указаны значения, которые определяет этот оператор. Эти значения могут ссылаться в предложении SET или в другом месте этого оператора и в другом месте в этом запросе.

Columnstore Index Update — это физический оператор.
Скаляр вычислений Оператор Compute Scalar вычисляет выражение и выдает вычисляемую скалярную величину. Затем это может быть возвращено пользователю, на который ссылается другой объект запроса или оба. Примерами одновременного использования этих возможностей являются предикаты фильтра или соединения.

Compute Scalar операторы, которые отображаются в showplans, созданных с помощью SET STATISTICS XML, могут не содержать элемента RunTimeInformation. В графических шоу-планах фактические строки, фактические привязки и фактические перемотки могут отсутствовать в окне свойств при выборе опции Включить фактический план выполнения в SQL Server Management Studio. Когда это происходит, это означает, что хотя эти операторы использовались в скомпилированном плане запроса, их работа выполнялась другими операторами в плане запросов среды выполнения. Количество выполнений в выходных данных showplan, созданных SET STATISTICS PROFILE, эквивалентно сумме перевязок и перемоток в шоупланах, созданных с помощью SET STATISTICS XML.

Compute Scalar — это логический и физический оператор.
Конкатенация Оператор Concatenation просматривает несколько входов, возвращая каждую просмотренную строку. Конкатенация обычно используется для реализации конструкции Transact-SQLUNION ALL. Физический оператор Concatenation имеет два или более входов и один выход. Конкатенация копирует строки из первого входного потока в выходной поток, а затем повторяет эту операцию для каждого дополнительного входного потока.

Concatenation является как логическим, так и физическим оператором.
Условный (if и пока) Условный оператор выполняет условную обработку на основе цикла или . Если и в то время являются элементами языка.
Константная проверка Оператор Constant Scan вводит в запрос одну или несколько константных строк. Оператор Compute Scalar часто используется после выполнения оператора Constant Scan . Он добавляет столбцы в строки, полученные в результате выполнения оператора Constant Scan . Константная проверка может создавать одну или несколько строк с нулевыми или несколькими столбцами.

Постоянное сканирование — это физический оператор.
Преобразовать Оператор Convert автоматически преобразует скалярные данные из одного типа в другой.

Convert является элементом языка.
Кросс джойн Оператор Cross Join соединяет каждую строку из первого (верхнего) входного параметра с каждой строкой второго (нижнего) входного параметра.

Cross Join является логическим оператором.
Курсор Логический и физический операторы Cursor предназначены для описания того, каким образом выполняются операции запроса или обновления с участием курсора. Физические операторы описывают алгоритм физической реализации обработки курсора, например использование курсора, управляемого набором ключей. Каждый этап выполнения курсора задействует физический оператор. Логические операторы описывают свойства курсора, например доступность курсора только для чтения.

Логические операторы включают асинхронные, оптимистичные, первичные, только для чтения, блокировки прокрутки, вторичные и синхронные.

Физические операторы включают Dynamic, Fetch Query, Keyset, Population Query, Refresh Query и Snapshot.
Declare Оператор Declare выделяет локальную переменную в плане запроса.

Declare является элементом языка.
Удаление Оператор Delete удаляет строки (из объекта), удовлетворяющие необязательному предикату в области свойств .

Delete — это логический оператор.
Удалённое сканирование В триггерах оператор удаленного сканирования сканирует удаленную таблицу.

Удаленная проверка — это логический и физический оператор.
нет Distinct Оператор Distinct удаляет дубликаты из набора строк или из коллекции значений.

Distinct является логическим оператором.
нет Различаемая сортировка Логический оператор Distinct Sort сканирует входные данные, удаляя дубликаты и сортируя по столбцам, указанным в предикате distinct order by в области свойств.

Distinct Sort является логическим оператором.
Распространение потоков Оператор Distribute Streams используется только в параллельных планах запросов. Оператор Distribute Streams преобразует один входящий поток записей в несколько выходящих потоков. Содержимое записи и формат не изменяются. Каждая запись из входного потока отображается в одном из выходных потоков, если только тип секционирования не является широковещательной, в этом случае каждая входная строка отображается во всех выходных потоках. Данный оператор автоматически сохраняет в выходящих потоках относительный порядок входящих записей. Чтобы определить выходящий поток, в который попадет запись из входящего потока, обычно используется хэширование.

Если выходные данные секционированы, область свойств содержит предикат столбцов секционирования и столбцы секционирования.

Распространение потоков — это логический оператор.
динамически; В операторе Dynamic используется курсор, который отслеживает изменения, внесенные другими.

Dynamic — это физический оператор.
Готовый спул Оператор Eager Spool принимает весь ввод, сохраняя каждую строку в скрытый временный объект базы данных tempdb . Если оператор перематывается (например, оператором Nested Loops), но повторная привязка не требуется, то вместо повторного сканирования ввода используются спуленные данные. Если требуется повторная привязка, данные в буфере удаляются, а объект буфера перестраивается путем повторного сканирования входных данных. Оператор Eager Spool выполняет построение своего буферного файла «жадным» способом: когда родительский оператор буфера запрашивает первую строку, оператор буферизации принимает все строки из своего входного оператора и сохраняет ее в буфер.

Eager Spool — логический оператор.
Извлечение запроса Оператор Fetch Query извлекает строки при выполнении выборки с курсором.

Fetch Query — это физический оператор.
Фильтр Оператор фильтра сканирует входные данные, возвращая только те строки, которые удовлетворяют выражению фильтра (предикату), который отображается в области свойств .
нет Различающиеся потоки Оператор Flow Distinct сканирует входные данные, удаляя дубликаты. В то время как оператор Distinct использует все входные данные перед созданием каких-либо выходных данных, оператор Flow Distinct возвращает каждую строку, полученную из входных данных (если только эта строка не является дубликатом, в этом случае она отбрасывается).

Flow Distinct — это логический оператор.
Проверка ссылок на внешние ключи Оператор проверки ссылок на внешний ключ выполняет проверки целостности ссылок, сравнивая измененную строку со строками в таблицах ссылок, чтобы убедиться, что изменение не нарушает целостность ссылок. Оператор Проверка ссылок на внешние ключи используется в том случае, если существует более 253 ссылок на один и тот же первичный или уникальный ключ.

Проверка ссылок на внешние ключи является логическим и физическим оператором.
Полное внешнее соединение Логический оператор Full Outer Join возвращает каждую строку, удовлетворяющую предикату соединения из первого (верхнего) входа и соединенную с каждой строкой из второго (нижнего) входа. Он также возвращает строки из:

— первый ввод, который не имел совпадений во втором вводе.

— Второй вход, не соответствующий первому входу.

Входные данные, не содержащие соответствующие значения, возвращаются в качестве значения NULL.

Full Outer Join является логическим оператором.
Сбор потоков Оператор Gather Streams используется только в планах параллельных запросов. Оператор Gather Streams считывает несколько входных потоков и создает один выходной поток записей, комбинируя все входные потоки. Содержимое записи и формат не изменяются. Если этот оператор сохраняет порядок, все входные потоки должны быть упорядочены. Если выходные данные упорядочены, область свойств содержит порядок по предикату и имена упорядоченных столбцов.

Gather Streams — логический оператор.
Хэш Матч Оператор Hash Match строит хэш-таблицу при помощи вычисления хэш-значения для каждой строки из своих входных данных. Хэш-предикат с списком столбцов, используемых для создания хэш-значения, отображается в области свойств. Затем для каждой тестовой строки (если возможно) он вычисляет хэш-значение (с использованием той же хэш-функции) и осуществляет поиск совпадений по хэш-таблице. Если остаточный предикат присутствует (показан как Build Residual или Probe Residual в области Свойств), этот предикат также должен быть удовлетворен, чтобы строки считались совпадением. Поведение зависит от выполняемой логической операции.

— Для любых соединений используйте первые (верхние) входные данные для сборки хэш-таблицы и второго (нижнего) ввода для проверки хэш-таблицы. Выходные данные совпадают (или не совпадают) в зависимости от типа соединения. Если несколько операций соединения используют один и тот же столбец соединения, эти операции группируются в хэш-группу.

— Для отдельных или агрегатных операторов используйте входные данные для создания хэш-таблицы (удаление дубликатов и вычисление любых статистических выражений). Когда хэш-таблица будет построена, просмотрите таблицу и выведите все записи.

— Для оператора объединения используйте первые входные данные для создания хэш-таблицы (удаление дубликатов). Используйте вторую входную строку (в которой не должно быть дубликатов) с целью тестирования хэш-таблицы, возвращения всех строк, не имеющих совпадений, затем просмотрите хэш-таблицу для возвращения всех записей.

Hash Match является физическим оператором. Дополнительные сведения см. в разделе Основные сведения о хэш-соединениях.
Удаление индекса Оператор Index Delete удаляет строки из некластеризованного индекса, указанного в области свойств .

Index Delete — это физический оператор.
Вставка индекса Оператор "Вставка индекса" вставляет строки из входных данных в некластеризованный индекс, указанный в области свойств . В панели свойств также содержится предикат set, который указывает значение, назначенное каждому столбцу.

Index Insert является физическим оператором.
Проверка индекса Оператор сканирования индекса извлекает все строки из некластеризованного индекса, указанного в области свойств . Если в панели свойств отображается необязательный предикат where, возвращаются только те строки, которые удовлетворяют этому предикату. Если свойство Order имеет значение True, строки возвращаются в порядке, в котором некластеризованный индекс сортировал их. Если свойство Ordered равно False, ядро СУБД сканирует индекс, не гарантируя порядок выходных данных.

Index Scan является логическим и физическим оператором.
Поиск индекса Оператор Index Seek использует возможности поиска по индексам для получения строк из некластеризованного индекса. Область свойств содержит имя используемого некластеризованного индекса. Он также содержит предикат поиска . Ядро СУБД использует индекс для обработки только тех строк, которые удовлетворяют предикату поиска. При необходимости, он может включать предикат где, который механизм СУБД оценивает по всем строкам, удовлетворяющим предикату поиска (механизм не использует индексы для этого).

Index Seek является логическим и физическим оператором.
Индекс Spool Оператор Index Spool содержит предикат поиска в панели свойств. Оператор Индекса Spool сканирует входные строки, помещая копию каждой строки в скрытый файл спула (хранящийся в базе данных tempdb и существующий только в течение всего времени существования запроса), и создает индекс на строках. Это позволяет использовать возможность поиска индексов для вывода только тех строк, которые удовлетворяют предикату поиска .

Index Spool — это физический оператор.
Обновление индекса Физический оператор Index Update обновляет строки из входных данных в некластеризованном индексе, указанном в панели свойств. Если присутствует предикат набора, для каждого обновленного столбца задано это значение.

Обновление индекса — это физический оператор.
Внутреннее соединение Оператор inner Join возвращает каждую строку, которая удовлетворяет предикату соединения первого (верхнего) входного элемента со вторым (нижним) входным элементом.

Внутреннее соединение — это логический оператор.
Insert Оператор Insert вставляет каждую строку из входных данных в объект, указанный в области свойств . Соответствующим физическим оператором является Table Insert, Index Insert или Clustered Index Insert.

Insert — это логический оператор.
Вставленное сканирование В триггерах оператор Inserted Scan сканирует таблицу inserted.

Inserted Scan является логическим и физическим оператором.
Intrinsic Встроенный оператор вызывает внутреннюю функцию Transact-SQL.

Intrinsic является элементом языка.
Итератор Значок общего итератора отображается, когда подходящий значок для итератора не может быть найден логикой, которая создает графические шоу-планы. Значок catchall не обязательно указывает условие ошибки.
Поиск ключей Оператор "Поиск ключей " — это поиск закладок в таблице с кластеризованным индексом или кластеризованным индексом columnstore. Для кластеризованного индекса область свойств содержит имя кластеризованного индекса и ключ кластеризации, используемый для поиска строки. Для кластеризованного индекса columnstore вместо ключа кластеризации предоставляется ColStoreLoc . Оператор Key Lookup всегда сопровождается оператором Nested Loops. Если предложение WITH PREFETCH отображается в области свойств, процессор запросов определил, что оптимально использовать асинхронное упреждающее чтение при поиске закладок в кластеризованном индексе.

Поиск ключей с большим числом запусков по сравнению с размером таблицы может выиграть от добавления покрывающего индекса. Низкое количество выполнения обычно не является проблемой производительности.
Набор ключей Оператор Keyset использует курсор, который видит обновления, но не вставки, внесённые другими.

Набор ключей — это физический оператор.
Языковой элемент Значок элемента языка отображается, когда подходящий значок для итератора не может быть найден системой, которая создает графические шоупланы. Значок catchall не обязательно указывает на наличие ошибки.
Ленивый Спул Логический оператор Lazy Spool сохраняет все строки входных данных в скрытом временном объекте, который хранится в базе данных tempdb . Если оператор перематывается (например, оператором Nested Loops), но при этом повторная привязка не требуется, то вместо повторного сканирования ввода используются данные из буфера. Если требуется повторная привязка, буферизованные данные удаляются, а объект буфера перестраивается путем повторного просмотра ввода. Оператор Lazy Spool создает свой буферный файл ленивым образом: каждый раз, когда родительский оператор буфера запрашивает строку, оператор буферизации получает строку от своего входного оператора и сохраняет её в буфер, а не обрабатывает все строки сразу.

Ленивый Spool является логическим оператором.
нет Левое анти-полусоединяние Оператор левого антиполусоединения возвращает каждую строку из первых (верхних) входных данных, если во вторых (нижних) входных данных отсутствует соответствующая строка. Если предикат соединения не существует в области свойств , каждая строка является соответствующей строкой.

Left Anti Semi Join является логическим оператором.
нет Левое внешнее соединение Оператор "Левое внешнее соединение" возвращает каждую строку, которая удовлетворяет предикату соединения первого (верхнего) входного элемента со вторым (нижним) входным элементом. Он также возвращает все строки из первых входных данных, которые не имеют совпадающих строк во втором входе. Строки, не имеющие соответствия строкам во втором входе, возвращаются как значения NULL. Если предикат соединения не существует в области свойств , каждая строка является соответствующей строкой.

Left Outer Join является логическим оператором.
нет Левое полусоединяние Оператор "Левое полусоединение " возвращает каждую строку из первого (верхнего) входного значения при наличии соответствующей строки во втором (нижнем) входе. Если предикат соединения не существует в области свойств , каждая строка является соответствующей строкой.

Left Semi Join является логическим оператором.
Проверка строк журнала Оператор Log Row Scan просматривает журнал транзакций.

Log Row Scan является логическим и физическим оператором.
Интервал слияния Оператор Merge Interval проводит слияние нескольких (возможно, пересекающихся) интервалов и возвращает минимальный, непересекающийся интервал, который затем используется для поиска записей индекса. Этот оператор обычно отображается перед одним или несколькими операторами скалярных вычислений над операторами константного сканирования, которые создают интервалы, представленные как столбцы в строке, которые этот оператор объединяет.

Merge Interval является логическим и физическим оператором.
Слияние соединением Оператор Merge Join выполняет внутреннее соединение, левое внешнее соединение, левое полусоединение, левое анти полусоединение, правое внешнее соединение, правое полусоединение, правое анти полусоединение, полное внешнее соединение, конкатенацию и операции объединения.

В области "Свойства" оператор Merge Join содержит предикат merge, если операция выполняет соединение "один ко многим", или предикат "многие ко многим" merge, если операция выполняет соединение "многие ко многим". Область свойств также содержит разделенный запятыми список столбцов, используемых для выполнения операции. Оператор Merge Join требует наличия двух входных значений, отсортированных в соответствующих столбцах, что можно сделать с помощью вставки явных операций сортировки в план запроса. Слияние соединением особенно эффективно, если явная сортировка не требуется, например, если в базе данных есть подходящий индекс B-дерева или порядок сортировки можно использовать для нескольких операций, таких как слияние соединением и группировка с итогацией.

Merge Join является физическим оператором. Дополнительные сведения см. в разделе Основные сведения о соединениях слиянием.
Вложенные циклы Оператор Nested Loops выполняет логические операции внутреннего соединения, левого внешнего соединения, левого полусоединения и антилевого полусоединения.

Соединения вложенных циклов запускают внутренние (нижние) входные данные один раз для каждой строки внешних (верхних) входных данных. При наличии свойства "Внешние ссылки " соединение является динамическим: перечисленные значения столбцов из внешней строки отправляются во внутренние входные данные, чтобы его операторы возвращали только соответствующие строки. Свойство Predicate не используется в этом случае. Если внешние ссылки отсутствуют, соединение является статическим: внутренние входные данные возвращают одни и те же строки для каждого выполнения, а предикат в области свойств определяет, какие сочетания квалифицируются как совпадения.

OPTIMIZED Если для атрибута задано значение True, оператор переупорядочивает внешние входные данные, чтобы улучшить локальность ввода-вывода при доступе к внутренним входным данным. Иногда это называется соединением оптимизированных вложенных циклов.

Nested Loops является физическим оператором. Дополнительные сведения см. в разделе Основные сведения о соединении вложенных циклов.
нет Вставка индекса в сети Оператор "Вставка индекса в Сети" указывает, что операция индексирования (создание, изменение или удаление) выполняется в сети. То есть данные базовых таблиц по-прежнему доступны для пользователей во время операции с индексом.

Вставка индекса в режиме онлайн является физическим оператором.
Никакой Parallelism Оператор Parallelism (или итератор обмена) выполняет логические операции распределения потоков, сбора потоков и переразбиения потоков. Область свойств может содержать предикат столбцов секционирования с разделенным запятыми списком секционированных столбцов. Область свойств также может содержать порядок по предикату, перечисляя столбцы для сохранения порядка сортировки во время секционирования.

Примечание. Если запрос был скомпилирован как параллельный запрос, но во время выполнения он выполняется в качестве последовательного запроса, выходные данные showplan, созданные SET STATISTICS XML или с помощью параметра "Включить фактический план выполнения" в SQL Server Management Studio, не содержат RunTimeInformation элемент для оператора Parallelism . В SET STATISTICS PROFILE выходных данных фактическое количество строк и фактическое количество выполнений отображают нули для оператора Parallelism. При возникновении любого из условий оператор Parallelism использовался только во время компиляции, а не в плане запроса исполнения. Иногда параллельные планы запросов выполняются последовательно, если на сервере выполняется высокая одновременная нагрузка.

Parallelism является физическим оператором. Дополнительные сведения об операторе Parallelism см. в разделе "Оператор параллелизма".
Проверка таблицы параметров Оператор проверки таблицы параметров считывает внутренний набор строк, созданный во время инструкции INSERT ... EXEC . Этот набор строк содержит выходные данные выполняемого модуля, например хранимую процедуру или динамический пакет SQL, когда эти результаты вставляются в таблицу, временную таблицу или переменную таблицы.

Parameter Table Scan является логическим и физическим оператором.
нет Частичная агрегация Частичный агрегат обычно используется в параллельных планах. Она применяет функцию агрегирования к максимально возможному количеству входных строк, чтобы запись на диск (называемая "выгрузкой") не была необходима. Hash Match — это единственный физический оператор (итератор), реализующий частичную статистическую обработку.

Partial Aggregate является логическим оператором.
Запрос о населении Оператор Population Query заполняет рабочую таблицу курсора при его открытии.

Запрос на население — это физический оператор.
Положить Оператор Put вставляет данные во внешнюю таблицу (PolyBase). В отличие от других операторов вставки, Put не возвращает строки оператору-родителю. В SQL Server 2016 (13.x) до SQL Server 2019 (15.x), оператор Put предназначен для Hadoop и работает в режиме строки. В SQL Server 2022 (16.x) и более поздних версиях оператор Put предназначен для хранения служба хранилища Azure или S3-совместимого хранилища и выполняется в пакетном режиме. Дополнительные сведения см. в разделе CREATE EXTERNAL TABLE AS SELECT (CETAS).

Put — это физический оператор.

Область применения: SQL Server 2016 (13.x) и более поздних версий.
Обновление запроса Оператор Refresh Query выбирает текущие данные для строк из буфера выборки.

Запрос обновления — это физический оператор.
Удаленное удаление Оператор Remote Delete удаляет входные строки удаленного объекта.

Remote Delete является логическим и физическим оператором.
Удаленная проверка индекса Оператор удаленного сканирования индексов сканирует удаленный индекс, указанный в области свойств .

Remote Index Scan является логическим и физическим оператором.
Удаленный поиск индекса Оператор Remote Index Seek использует возможности поиска объекта удаленного индекса, чтобы получить строки. Область свойств содержит имя используемого удаленного индекса и предиката поиска .

Удаленный поиск индекса — это логический и физический оператор.
Удаленная вставка Оператор Remote Insert вставляет входные строки в удаленный объект.

Remote Insert является логическим и физическим оператором.
Удаленный запрос Оператор Remote Query отправляет запрос удаленному источнику. Текст запроса, отправляемого на удаленный сервер, отображается в области свойств .

Remote Query является логическим и физическим оператором.
Удаленная проверка Оператор Remote Scan позволяет удаленно просматривать необходимые объекты. Имя удаленного объекта отображается в области свойств .

Remote Scan является логическим и физическим оператором.
Удаленное обновление Оператор Remote Update обновляет входные строки удаленного объекта.

Remote Update является логическим и физическим оператором.
Перераспределение потоков Оператор Repartition Streams (или итератор обмена) потребляет несколько потоков и генерирует несколько потоков записей. Содержимое записи и формат не изменяются. Если оптимизатор запросов использует фильтр растрового изображения, количество строк в выходном потоке уменьшается. Каждая запись из входного потока помещается в один выходной поток. Если оператор настроен для сохранения порядка, то все входные потоки упорядочиваются и сливаются в несколько упорядоченных выходных потоков. Если выходные данные секционированы, область свойств содержит предикат столбцов секционирования и столбцы секционирования. Если выходные данные упорядочены, область свойств содержит предикат упорядочивание по и столбцы, по которым осуществляется упорядочивание. Оператор используется только в параллельных планах запроса.

Repartition Streams — это логический оператор.
Результат Оператор Result представляет собой данные, возвращенные в конце плана запроса. Обычно это корневой элемент showplan.

Result является элементом языка.
Поиск RID Оператор RID Lookup производит операцию поиска закладки в куче, используя заданный идентификатор строки (RID). Область свойств содержит метку закладки, используемую для поиска строки в таблице, и имя таблицы, в которой находится строка. Подстановка RID всегда сопровождается оператором Вложенных Циклов.

RID Lookup является физическим оператором. Дополнительные сведения о поиске закладок см. в разделе «Чтение с фиксацией» и «Поиск закладки».
нет Правое анти полусоединяние Оператор справа от полусоединения выводит каждую строку из второго (нижнего) ввода, если соответствующая строка в первом (верхнем) входе не существует. Соответствующая строка определяется как строка, которая удовлетворяет предикату в области свойств (если предикат отсутствует, каждая строка является соответствующей строкой).

Right Anti Semi Join является логическим оператором.
нет Правое внешнее соединение Оператор Right Outer Join возвращает каждую строку, которая удовлетворяет соединению второго (нижнего) входа с первым (верхним). Он также возвращает любые строки из второго ввода, у которых нет соответствующих строк в первом вводе, присоединенные к NULL. Если предикат соединения не существует в области свойств , каждая строка является соответствующей строкой.

Right Outer Join является логическим оператором.
нет Правое полусоединяние Оператор "Правое полусоединение" возвращает каждую строку из второго (нижнего) входного потока, если в первом (верхнем) входе есть соответствующая строка. Если предикат соединения не существует в области свойств , каждая строка является соответствующей строкой.

Right Semi Join является логическим оператором.
Число строк Оператор Row Count Spool просматривает входные данные, подсчитывая число представленных строк и возвращая такое же количество строк, очищенных от данных. Этот оператор используется, если важно проверить наличие строк, а не данных, содержащихся в строках. Например, если оператор вложенных циклов выполняет операцию левого полусоединения и предикат соединения применяется к внутренним входным данным, то в верхней части внутреннего входа оператора вложенных циклов может быть размещен счетчик строк. Затем оператор вложенных циклов может определить, сколько строк выводится с помощью пула счетчика строк (поскольку фактические данные из внутренней стороны не нужны), чтобы определить, следует ли возвращать внешнюю строку.

Оператор "Row Count Spool" — это физический оператор.
нет Перераспределение сегмента В плане параллельных запросов иногда содержатся концептуальные области итераторов. Все итераторы в такой области могут работать в параллельных потоках. Сами регионы должны выполняться последовательно. Некоторые итераторы оператора Parallelism внутри отдельной области называются Branch Repartition. Итератор Parallelism на границе двух таких областей называется Segment Repartition.

Branch Repartition и Segment Repartition являются логическими операторами.
Сегмент Оператор "Сегмент" делит входной набор на сегменты на основе значения одного или нескольких столбцов. Эти столбцы отображаются в виде аргументов оператора Segment . Входные данные отсортированы по этим столбцам. Оператор использует столбец сегмента, чтобы пометить первую строку каждого сегмента.

Сегмент — это физический и логический оператор.
Project Sequence Оператор Sequence Project добавляет столбцы для выполнения вычислений над упорядоченным набором. Для этого требуется деление входного набора на сегменты на основе значения одного или нескольких столбцов.

Sequence Project является логическим и физическим оператором.
Последовательность Оператор Последовательности выполняет каждый входной элемент по порядку (сверху вниз) и возвращает только те строки, которые относятся к его последнему (нижнему) входному элементу. Распространенные варианты использования включают широкие планы обновления (где каждый вход обычно является обновлением другого объекта), запросы, использующие функции с табличным значением с несколькими инструкциями, и запросы, используемые SHORTEST_PATH в таблице графов.

Sequence является логическим и физическим оператором.
Моментальный снимок Оператор моментального снимка создает курсор, который не видит изменений, внесенных другими пользователями.

Снапшот — это физический оператор.
Сортировать Оператор Sort сортирует входящие строки. Область свойств содержит отдельный порядок по предикату, если дубликаты удаляются этой операцией, или порядок по предикату с разделенным запятыми списком отсортированных столбцов. Столбцы префиксируются со значением ASC , если столбцы отсортированы по возрастанию или значение DESC , если столбцы отсортированы в порядке убывания.

Sort — это логический и физический оператор.
Разделение Оператор Split используется для оптимизации процесса обновления. Он разбивает каждую операцию обновления на операции удаления и вставки.

ОператорSplit является логическим и физическим оператором.
Spool Оператор Spool сохраняет промежуточные результаты запроса в базе данных tempdb .
Агрегация потока Оператор Stream Aggregate группирует строки в один или несколько столбцов и вычисляет одно или несколько агрегатных выражений, возвращенных запросом. Оператору Stream Aggregate необходимы входные данные, упорядоченные по группируемым столбцам. Оптимизатор использует оператор сортировки перед этим оператором, если данные еще не отсортированы из-за предыдущего оператора сортировки или из-за упорядоченного поиска или сканирования индекса. SHOWPLAN_ALL В инструкции или графическом плане выполнения в SQL Server Management Studio столбцы в предикате group by перечислены в области свойств, а агрегатные выражения перечислены в столбце "Определенные значения".

Stream Aggregate является физическим оператором.
Коммутатор ОператорSwitch представляет собой особый тип итератора объединения, который имеет n входов. Выражение связывается с каждым оператором Switch . В зависимости от возвращаемого значения выражения (от 0 до n-1) переключение выполняет соответствующие входные данные и возвращает свои строки. Switch используется для реализации планов запросов для инструкций в INSERT INTO секционированных представлениях. Он также используется для реализации планов запросов с использованием быстрых курсоров при перемещении вперед с определенными операторами, такими как оператор TOP.

Коммутатор — это логический и физический оператор.
Удаление таблицы Оператор "Удаление таблицы" удаляет строки из таблицы, указанной в области свойств плана выполнения запроса.

Table Delete — это физический оператор.
Вставка таблицы Оператор "Вставка таблицы" вставляет строки из входных данных в таблицу, указанную в области свойств плана выполнения запроса. В области свойств также содержится предикат типа set, указывающий значение, которому задан каждый столбец. Если оператор Table Insert не имеет потомков для вставки значений, то вставленная строка берется из самого оператора вставки.

Table Insert является физическим оператором.
Слияние таблиц Оператор Table Merge применяет поток данных слияния к куче. Оператор удаляет, обновляет или вставляет строки в таблицу, указанную в области свойств оператора. Фактическая операция, выполняемая, зависит от значения свойства ActionColumn во время выполнения.

Table Merge является физическим оператором.
Сканирование таблиц Оператор сканирования таблиц извлекает все строки из таблицы, указанной в области свойств плана выполнения запроса. Если в области свойств отображается предикат, возвращаются только те строки, которые удовлетворяют предикату.

Table Scan является логическим и физическим оператором.
Table Spool Оператор Table Spool просматривает входную таблицу и помещает копию каждой строки в скрытую буферную таблицу, которая находится в базе данных tempdb и существует только в течение времени жизни запроса. Если оператор перематывается (например, оператором Nested Loops), но при этом повторная привязка не требуется, то вместо повторного сканирования ввода используются данные из буфера.

Table Spool является физическим оператором.
Обновление таблицы Оператор обновления таблиц обновляет входные строки в таблице, указанной в области свойств плана выполнения запроса. Предикат набора определяет значение каждого обновленного столбца. Эти значения могут ссылаться в предложении SET или в другом месте этого оператора и в другом месте этого запроса.

Обновление таблицы — это физический оператор.
Функция с табличным значением Оператор функции с табличным значением оценивает табличное значение функции (Transact-SQL или CLR) и сохраняет полученные строки в базе данных tempdb. Когда родительские итераторы запрашивают строки, функция с табличным значением возвращает строки из tempdb.

Запросы, содержащие вызовы табличных функций, формируют планы запросов с итератором Table-valued Function. Функция с табличным значением может вычисляться с различными значениями параметров:

- Считыватель функции, возвращающей таблицу на основе XML принимает XML BLOB как параметр и возвращает набор строк, представляющий узлы XML в том порядке, в каком они идут в документе XML. Другие входные параметры могут ограничить узлы XML, возвращаемые в подмножество XML-документа.

- Модуль чтения функции с табличным значением XML с фильтром XPath — это специальный тип модуля чтения функции с табличным значением XML , ограничивающий результат узлами XML, соответствующими выражению XPath.

ОператорTable-valued Function — это логический и физический оператор.
Топ Оператор Top просматривает входные данные и возвращает только указанное число или процент строк, выбранных, возможно, на основе порядка сортировки. Область свойств может содержать список столбцов, которые проверяются на наличие совпадений. В планах обновления оператор Top используется для соблюдения ограничений на число строк.

Top — это логический и физический оператор.
нет Топ-N сортировка ОператорTop N Sort аналогичен итератору Sort за исключением того, что требуются только первые N строк, а не весь результирующий набор. Для небольших значений N подсистема выполнения запросов SQL Server пытается выполнить всю операцию сортировки в памяти. Для больших значений N подсистема выполнения запросов использует более универсальный метод сортировки, к которому N не является параметром.
UDX Расширенные операторы (UDX) реализуют одну из многих операций XQuery и XPath в SQL Server.

— Расширенный оператор (UDX) FOR XML используется для сериализации реляционной строки, которую он вводит в XML-представление в одном столбце BLOB в одной выходной строке. Это оператор агрегирования XML с учетом порядка.

— Расширенный оператор (UDX) XML SERIALIZER — это оператор агрегирования XML с учетом порядка. Он получает на входе строки, представляющие XML-узлы или скаляры XQuery в порядке, соответствующем XML-документу, и выдает сериализованный XML BLOB в единственном XML-столбце единственной строки вывода.

— Расширенный оператор (UDX) XML FRAGMENT SERIALIZER — это особый тип XML SERIALIZER , используемый для обработки входных строк, представляющих фрагменты XML, вставляемые в расширение изменения данных XQuery.

— Расширенный оператор (UDX) XQUERY STRING вычисляет строковое значение XQuery входных строк, представляющих XML-узлы. Это оператор агрегирования строки с учетом порядка. Он выводит одну строку со столбцами, представляющими скаляр XQuery, содержащий строковое значение входа.

— расширенный оператор (UDX) XQUERY LIST DECOMPOSER — это оператор декомпозиции списка XQuery. Для каждой входной строки, представляющей XML-узел, она создает одну или несколько строк, представляющих скаляр XQuery, содержащий значение элемента списка, если входные данные имеют тип списка XSD.

— Расширенный оператор (UDX) XQUERY DATA оценивает функцию XQuery fn:data() для входных данных, представляющих XML-узлы. Это оператор агрегирования строки с учетом порядка. Он выводит одну строку со столбцами, представляющими скаляр XQuery, содержащий результат fn:data().

— Расширенный оператор XQUERY CONTAINS вычисляет функцию XQuery fn:contains() для входных данных, представляющих XML-узлы. Это оператор агрегирования строки с учетом порядка. Он выводит одну строку со столбцами, представляющими скаляр XQuery, содержащий результат fn:contains().

— расширенный оператор UPDATE XML NODE обновляет XML-узел в расширении изменения данных XQuery в методе XML-типа modify().

Операторы UDX являются логическими и физическими.
Союз Оператор Union просматривает несколько входов, выводя каждую просмотренную строку и удаляя дубликаты.

Union — это логический оператор.
Update Оператор update обновляет каждую строку из входных данных в объекте, указанном в области свойств плана выполнения запроса.

Update является логическим оператором. Физический оператор — это обновление таблиц, обновление индекса, обновление кластеризованного индекса или обновление индекса Columnstore.
нет Оконная агрегация Оператор Window Aggregate оценивает одно или несколько агрегатных выражений с определением окна и добавляет результаты в поток данных.

Window Aggregate — это логический и физический оператор.
Окно Spool Оператор Window Spool расширяет каждую строку в набор строк, представляющий связанное с ним окно. В запросе OVER предложение определяет окно в результирующем наборе запросов, а затем функция окна вычисляет значение для каждой строки в окне. Оператор сохраняет все входные строки в скрытой рабочей таблице в базе данных tempdb или в памяти.

Window Spool является логическим и физическим оператором.

Примечание.

В документации термин B-tree обычно используется в ссылке на индексы. В индексах rowstore ядро СУБД реализует дерево B+. Это не относится к индексам columnstore или индексам в таблицах, оптимизированных для памяти. Дополнительные сведения см. в руководстве по архитектуре и проектированию индексов SQL Sql Server и Azure.