Change log
This site has different types of readers. Those that come here to quickly look up something, using it as the reference this is. And those that read everything, or at least the pages they consider interesting, using it as a source of knowledge in addition to books, blogs, conferences, etc.
Especially the second type of reader might want to know when something changed. That’s what this page is for. Here you will find a full log of all changes. Most recent first.
May 18, 2024
New pages:
- Remote Query: New page with the description of the Remote Query operator.
Updated pages:
- Added links to the Remote Query page on the Operator List page, and other relevant pages.
- Plan properties: Added the Description and Operation Type properties.
- Scalar Functions: Added the FETCH_RANGE function.
- Table Valued Function: Added the INDEXANALYSIS internal table-valued functions.
April 14, 2024
New pages:
- Window Aggregate: New page with the description of the Window Aggregate operator.
Updated pages:
- Added links to the Window Aggregate page on the Operator List page, and other relevant pages.
- Aggregate Functions: Added the COUNT_BIG, STATMAN and STATMANMERGE aggregate functions; added data type of the returned value for Count (*), COUNT, and COUNT_BIG.
- Clustered Index Scan, Clustered Index Seek, Columnstore Index Scan, Index Scan, Index Seek, and Table Scan: Added the Actual Partition Count and Actual Partitions Accessed properties.
- Common properties: Added the properties that are only found in live execution plans: OpenTime, Status, CompletionEstimate, and CloseTime.
- Parallelism (Distribute Streams) and Parallelism (Repartition Streams): Added more information about Partitioning Type Range, and slightly reworded the description for Partitioning Type Round Robin.
- Plan properties: Specified units used for the various subproperties of the MemoryGrantInfo property.
- Scalar Functions: Added the showplanxmldecompress function.
- Table Valued Function: Added the eight QUERY_STORE_*_IN_MEM internal table-valued functions.
January 16, 2024
New pages:
- UDX: New page with the description of the UDX operator.
Updated pages:
- Added links to the UDX page on the Operator List page, and other relevant pages.
- Aggregate Functions: Added that LAST_VALUE_IGNORE_NULLS was introduced in SQL Server 2022.
- Switch: Updated with information about input/output mapping and output order after I found an execution plan that uses this operator to return rows with actual data.
- Table Valued Function: Applied a correction to the description of the [XML Reader with XPath filter] internal table-valued function.
December 12, 2023
New pages:
- Online Index Insert: New page with the description of the Online Index Insert operator.
Updated pages:
- Added links to the Online Index Insert page on the Operator List page, and other relevant pages.
- Clustered Index Delete, Clustered Index Insert, Clustered Index Merge, Clustered Index Update, Columnstore Index Delete, Columnstore Index Insert, Columnstore Index Merge, Columnstore Index Update, Index Delete, Index Insert, and Index Update: Added additional information about the OnlineInbuildIndex subproperty of the Object property.
- Aggregate Functions: Added the APPROX_PERCENTILE_ACCUM function; added in which version an aggregate function was introduced (where known).
- Scalar Functions: Added the APPROX_PERCENTILE_CONT and APPROX_PERCENTILE_DISC functions; added in which version a scalar function was introduced (where known).
- Stream Aggregate: Corrected the flowchart to return correct results for a scalar aggregate and improved the description of scalar aggregation computation in the text.
December 3, 2023
Updated pages:
- Batch Hash Table Build: Added the flowchart that was missing on this page.
November 16, 2023
New pages:
- Language Element: New page with the description of the Language Element “operator”.
Updated pages:
- Added links to the Language Element page on the Operator List page, and other relevant pages.
- Plan properties: Added the StatementType property.
- Result: Added list of similar “operators” that can appear in an execution plan only (aka estimated execution plan).
November 10, 2023
Updated pages:
- Aggregate Functions: Added the LAST_VALUE_IGNORE_NULLS function; small clarification for ANY; changed the wording in the “Update functions” column of several functions to be more concise and more consistent; corrected the capitalization of the Count(*) function.
- Common properties: Added in which version a property was introduced, for appropriate properties.
- Hash Match: Small correction to the flowchart for the aggregated build phase (a direct result of the correction I made to the text in August 23, 2023); small extra clarification of the actions for Logical Operation Union.
- Plan properties: Added in which version a property was introduced, for appropriate properties.
- Scalar Functions: Added description of the remapbits function.
- Stream Aggregate: Added the Rollup Information property and a description of the additional work for rollup processing (to add subtotals and grand totals); clarified the processing of this operator for aggregation of a framed window (OVER clause with implicit or explicit ROWS or RANGE specification).
- Table Spool: Added additional explanation about idiosyncrasies of its Actual I/O Statistics property.
November 2, 2023
New pages:
- Result: New page with the description of the Result (aka SELECT) “operator”.
Updated pages:
- Added links to the Result page on the Operator List page, and other relevant pages.
- Adaptive Join: Improved description of the Optimized property and added description of the With Ordered Prefetch and With Unordered Prefetch
- Table Insert, Table Scan: Added subproperties for the graph worktables that are used in SHORTEST_PATH evaluations.
September 9, 2023
New pages:
- Batch Hash Table Build: New page with the description of the Batch Hash Table Build operator.
Updated pages:
- Added links to the Batch Hash Table Build page on the Operator List page, and other relevant pages.
- Adaptive Join, Bitmap, Hash Match: Added clarification of difference between batch-mode bitmaps and row-mode bit-maps, with links to deeper explanation.
- Sort: Improved flowchart and description of the optimized build phase for Top N Sort.
August 23, 2023
New pages:
- Switch: New page with the description of the Switch operator.
Updated pages:
- Added links to the Switch page on the Operator List page, and other relevant pages.
- Clustered Index Merge: Updated text and flowchart to reflect that certain older versions of SQL Server could include additional nonclustered indexes in the Object property.
- Hash Match: Found and corrected a severe mistake in the described internals of the Union Logical Operation. Also added additional information on tracking of matches for some Logical Operation. Also added additional information on tracking of matches for some Logical Operations.
- Sequence: Minor improvements to the description of the Is GraphDB Transitive Closure property, and added a link to a blog post with a very detailed description.
- Table Merge: Updated text to reflect that only older versions of SQL Server could include additional nonclustered indexes in the Object property.
August 4, 2023
Updated pages:
- Common properties: Added the Internal Debugging Information property.
- Merge Join: Extensive rewrite of the page and update of the flowchart, to correct several incorrect assumptions I had originally made on how this operator works.
- Scalar Functions: Added description of the IsFalseOrUnknown function.
- Sort: Added a paragraph to clarify that in some cases, reported rewinds are in reality rebinds (thanks, Paul!).
July 17, 2023
New pages:
- Sort: New page with the description of the Sort operator.
Updated pages:
- Added links to the Sort page on the Operator List page, and other relevant pages.
- Sequence: Added a description of the modified behavior of this operator when it has the Is GraphDB Transitive Closure property set.
- Table Valued Function: Added descriptions for the GENERATE_SERIES, OPENJSON_DEFAULT, and OPENJSON_EXPLICIT internal table-valued functions.
- Common properties: Corrected a minor typo.
- Change Log: Corrected several typos.
June 17, 2023
Updated pages:
- Nested Loops: Corrected a small mistake in the flowchart (a slightly misplaced label – thanks, Yang!), and corrected yet another typo.
June 13 – 16, 2023
Updated pages:
- Operator List: Replaced the “old” four sets of icons (SSMS 17.4 and up; SSMS until 17.3; Azure Data Studio; and Plan Explorer) with four “new” sets (SSMS and ADS current versions; Legacy SSMS; Plan Explorer; and Paste The Plan). See this blog post for more information.
- All existing operator pages: Replaced the table with the “old” four icons with the same four “new” ones.
- Nested Loops: Fixed a link to one of Paul White’s posts, that has been moved after I published this page, and corrected a typo.
June 2, 2023
Updated pages:
- Parallelism (Gather Streams) and Parallelism (Distribute Streams): Fixed a caching issue with the updated flowcharts (the old version was still shown after the June 1 change).
- Nested Loops: Minor update to the flowchart, to better reflect the processing of the inner loop.
June 1, 2023
New pages:
- Parallelism (Repartition Streams): New page with the description of the Parallelism operator when using the Repartition Streams operation.
Updated pages:
- Added links to the Parallelism (Repartition Streams) page on the Operator List page, and other relevant pages.
- Parallelism (Gather Streams) and Parallelism (Distribute Streams): Added description of the Predicate property in main text and property list and updated flow charts to reflect the logic of the Predicate Fixed an error in the flowchart for the consumer side process. Also fixed a few typos.
- Scalar Functions: Added description of the PROBE function.
- Filter: Fixed two confusing mistakes in the list of operator properties.
- Adaptive Join, Hash Match: Corrected the description of the BitmapCreator property to reflect that they create a bitmap at the end of the build phase rather than during the build phase.
May 22, 2023
Updated pages:
- Scalar Functions: Added descriptions of the edge_id_from_parts, getgraphidentity, graph_id_from_edge_id, graph_id_from_internal_graph_data, graph_id_from_node_id, internal_graph_from_node_id, node_id_from_parts, object_id_from_edge_id, object_id_from_internal_graph_data, and object_id_from_node_id functions.
May 17, 2023
New pages:
- Parallelism (Gather Streams): New page with the description of the Parallelism operator when using the Gather Streams operation.
Updated pages:
- Added links to the Parallelism (Gather Streams) page on the Operator List page, and other relevant pages.
- Parallelism (Distribute Streams): Fixed an error in one of the flowcharts (Yes and No labels for the “Data available?” test were reversed). Clarified that a wait on the consumer side affects only its own thread and not all threads where this process is running.
- Plan properties:
- Added the value 160 (SQL Server 2022) for the CardinalityEstimationModelVersion property (thanks, Yeatsie!).
- Improved the description of the ContainsInterleavedExecutionCandidates property.
- Changed “true” and “false” to “True” and “False” to better match how these values are represented in graphical execution plans.
- Sequence: Added missing hyperlinks to the Table Valued Function page, and improved and clarified the description of its semi-blocking behavior.
- Table Valued Function: Added an explicit description of a case where the IsInterleavedExecuted property is bugged; also made some other small improvements to the description of this property.
May 2, 2023
New pages:
- Parallelism (Distribute Streams): New page with the description of the Parallelism operator when using the Distribute Streams operation.
Updated pages:
- Added links to the Parallelism (Distribute Streams) page on the Operator List page, and other relevant pages.
- Changed the table on the Operator List page to have separate entries for the three logical operations of the Parallelism operator.
- Table Valued Function: Added a description for the PlanarTesselation internal table-valued function.
March 2, 2023
New pages:
- Table Valued Function: New page with the description of the Table Valued Function operator.
Updated pages:
- Added links to the Table Valued Function page on the Operator List page, and other relevant pages.
- Constant Scan: Corrected a copy/paste error.
- Hash Match: Corrected a copy/paste error.
- Scalar Functions: Added some additional information to the description of the manufactureconstructordpath function.
January 21, 2023
Updated pages:
- Constant Scan: Changed to reflect that a Constant Scan can return zero rows (thanks, Martin!). Also reorganized and rephrased the description of the Values property from the properties table to the main text.
January 21, 2023
New pages:
- Constant Scan: New page with the description of the Constant Scan operator.
Updated pages:
- Added links to the Constant Scan page on the Operator List page, and other relevant pages.
- Scalar Functions: Added the description of the BmkToPage function.
September 10, 2022
New pages:
- Table Merge: New page with the description of the Table Merge operator.
Updated pages:
- Added links to the Table Merge page on the Operator List page, and other relevant pages.
July 2, 2022
New pages:
- Columnstore Index Merge: New page with the description of the Columnstore Index Merge operator.
Updated pages:
- Added links to the Columnstore Index Merge page on the Operator List page, and other relevant pages.
June 5, 2022
New pages:
- Clustered Index Merge: New page with the description of the Clustered Index Merge operator.
Updated pages:
- Added links to the Clustered Index Merge page on the Operator List page, and other relevant pages.
- Plan properties: Added a link to Taiob Ali’s blog post with details about the subproperties of the MemoryGrantInfo property.
- Nested Loops: Link to Craig Freedman’s blog post on optimized Nested Loops processing was incorrect, now fixed.
May 12, 2022
New pages:
- Table Update: New page with the description of the Table Update operator.
Updated pages:
- Added links to the Table Update page on the Operator List page, and other relevant pages.
- Clustered Index Update: Corrected two minor copy/paste errors.
April 26, 2022
New pages:
- Columnstore Index Update: New page with the description of the Clustered Index Update operator.
Updated pages:
- Added links to the Columnstore Index Update page on the Operator List page, and other relevant pages.
- Index Seek: Corrected a typo.
- Scalar Functions: Added the description of the RangePartitionNew function.
April 1, 2022
New pages:
- Clustered Index Update: New page with the description of the Clustered Index Update operator.
Updated pages:
- Added link to the Clustered Index Update page on the Operator List page.
- Clustered Index Delete, Clustered Index Insert, Clustered Index Scan, Clustered Index Seek, Columnstore Index Delete, Columnstore Index Insert, Columnstore Index Scan, Index Delete, Index Insert, Index Scan, Index Seek, Index Update, Table Delete, and Table Insert: Added additional information about the IndexKind subproperty of the Object property, and about the Partitioned property.
- Merge Join: Clarified the potentially confusing information on the conditions when the operator does or does not preserve order from its input data.
- Aggregate Functions: Corrected an error in the description of the ANY function; changed some detailed descriptions slightly to get a more consistent description of the “Initialize counters” action; put in a disclaimer that some functions could be implemented in a different way to get the same result.
February 26, 2022
New pages:
- Index Update: New page with the description of the Index Update operator.
Updated pages:
- Added link to the Index Update page on the Operator List page.
- Scalar Functions: Added descriptions for the GetGIFromNID, getidentity, getparent, and GetURIFromNID functions.
- Common properties: Improved the description of the Actual I/O Statistics property to explicitly clarify that it is not included for operators that read from a memory-optimized index or table.
September 16, 2021
New pages:
- Table Delete: New page with the description of the Table Delete operator.
Updated pages:
- Added link to the Table Delete page on the Operator List page, and one other page.
August 28, 2021
New pages:
- Columnstore Index Delete: New page with the description of the Columnstore Index Delete operator.
Updated pages:
- Added link to the Columnstore Index Delete page on the Operator List page, and a few other pages.
- Columnstore Index Insert: Corrected a few minor errors.
August 24, 2021
Updated pages:
- Clustered Index Delete: Updated to correctly reflect that the actual removal of a row from the clustered index is delayed until the next time the operator is called (thanks, Paul!).
August 16, 2021
New pages:
- Clustered Index Delete: New page with the description of the Clustered Index Delete operator.
Updated pages:
- Added link to the Clustered Index Delete page on the Operator List page.
- Index Delete: Added link to the Clustered Index Delete page and fixed a minor typo.
July 30, 2021
New pages:
- Index Delete: New page with the description of the Index Delete operator.
Updated pages:
- Added link to the Index Delete page on the Operator List page.
July 18, 2021
New pages:
- Table Insert: New page with the description of the Table Insert operator.
Updated pages:
- Added link to the Table Insert page on the Operator List page, and a few other pages.
- Clustered Index Insert, Columnstore Index Insert, and Index Insert: Minor changes in the Object and Predicate properties (copy/paste error and fix for potentially confusing wording).
July 10, 2021
New pages:
- Columnstore Index Insert: New page with the description of the Columnstore Index Insert operator.
Updated pages:
- Added link to the Columnstore Index Insert page on the Operator List page, and a few other pages.
- Clustered Index Insert, Clustered Index Scan, Clustered Index Seek, Columnstore Index Scan, Index Insert, Index Scan, Index Seek, and Table Scan: Several changes to better highlight that IndexKind and Storage are subproperties of the Object property, rather than direct properties of the operator itself.
- Clustered Index Insert: Changed to reflect that this operator can also insert into a columnstore index if it targets more than one index.
June 21, 2021
New pages:
- Clustered Index Insert: New page with the description of the Clustered Index Insert operator.
Updated pages:
- Added link to the Clustered Index Insert page on the Operator List page, and a few other pages.
May 30, 2021
New pages:
- Index Insert: New page with the description of the Index Insert operator.
Updated pages:
- Added link to the Index Insert page on the Operator List page.
- Plan properties: Added the ContainsInterleavedExecutionCandidates property.
- Columnstore Index Scan, Common Properties, Key Lookup: Added notes about a bug in the interaction of the Actual I/O Statistics property when reading data from columnstore indexes, and about possibly incorrect Actual Number of Rows and Actual Number of Rows for All Executions for a Columnstore Index Scan on a nonclustered columnstore index.
May 9, 2021
New pages:
- Top: New page with the description of the Top operator.
Updated pages:
- Added link to the Top page on the Operator List page, and on a few other pages.
- Common Properties: Added the EstimateRowsWithoutRowGoal property.
- Clustered Index Scan, Clustered Index Seek, Columnstore Index Scan, Index Scan, Index Seek, and Table Scan: Added an important note about how the Estimated Number of Rows to be Read property interacts with a row goal.
April 21, 2021
Updated pages:
- Scalar Functions: Reverted the April 15 change after recalling that this page is only for functions that are not described in Books Online.
April 15, 2021
New pages:
- Deleted Scan: New page with the description of the Deleted Scan operator.
- Inserted Scan: New page with the description of the Inserted Scan operator.
Updated pages:
- Added links to the Deleted Scan and Inserted Scan pages on the Operator List page.
- Scalar Functions: Added the functions “greatest” and “least” that are currently used on Azure SQL Database only to implement the new GREATEST and LEAST keywords.
- Improved visual design of tables on all pages.
April 12, 2021
Updated pages:
- Clustered Index Scan, Clustered Index Seek, Columnstore Index Scan, Index Scan, Index Seek, and Table Scan: Added the Partitioned property, that is present and set on these operators if they target a partitioned index or heap.
- Common Properties: Improved the description for the Actual Time Statistics property, based on Paul White’s article.
- Plan properties: Improved the description of the ThreadStat property, based on (another) article by Paul White.
February 12, 2021
New pages:
- Sequence: New page with the description of the Sequence operator.
Updated pages:
- Added link to the Sequence page on the Operator List page, and on a few other pages.
January 16, 2021
New pages:
- Concatenation: New page with the description of the Concatenation operator.
Updated pages:
- Added link to the Concatenation page on the Operator List page, and on a few other pages.
January 1, 2021
Updated pages:
- Row Count Spool: Significant changes to the page after discovering that a Row Count Spool can, in fact, run as either builder or consumer.
December 14, 2020
New pages:
- Merge Interval: New page with the description of the Merge Interval operator.
Updated pages:
- Added link to the Merge Interval page on the Operator List and Index Seek pages.
- Index Seek: Added information about dynamic seek ranges.
- Scalar Functions: Added link to dynamic seek ranges for function that use the corresponding seek_flags column; moved GetSparseColumnValue to its proper alphabetical location in the list; added RaiseIfNullUpdate function.
December 3, 2020
New pages:
- Scalar Functions: Moved the list of all built-in functions that are not standard SQL from Compute Scalar to a separate page, since it also applies to many more operators.
Also added descriptions for APPROX_COUNT_DISTINCT_CONVERT, RaiseIfNullInsert, sysmaxdatetime, and systrandatetime. - Aggregate Functions: Moved the list of all aggregate functions from Stream Aggregate to a separate page, since it also applies to Hash Match.
Also added a description for APPROX_COUNT_DISTINCT_ACCUM.
Updated pages:
- Added links to the new Scalar Functions and Aggregate Functions pages on several existing pages; removed the corresponding tables from Compute Scalar and Stream Aggregate.
- Split: Updated with some new information on the mapping of “old” versus “new” values in updated rows.
November 25, 2020
Updated pages:
- Nested Loops: Added description of special column Passnnnn in the Output List property.
- Merge Join: Added extra details on the probed Left Semi Join description; added description of pass-through operation for this operator.
November 19, 2020
New pages:
- Filter: New page with the description of the Filter operator.
Updated pages:
- Added link to the Filter page on the Operator List page, and on a few other pages.
November 18, 2020
Updated pages:
- Index Spool, Table Spool, Window Spool: Corrected wrong information about behavior of these operators in parallel execution plans.
- Stream Aggregate, Window Spool: Improved description of the interaction of these two operators for windowed aggregate; corrected wrong information about behavior of these operators for windowed aggregates with a RANGE specification.
- Hash Match: Removed wrong information and added corrected description of the Partial Aggregate logical operation. (Thanks, Paul!)
- Plan properties: Added descriptions for properties BatchModeOnRowStore, PlanGuideDB, PlanGuideName, and Use plan.
October 25, 2020
New pages:
- Sequence Project: New page with the description of the Sequence Project operator.
Updated pages:
- Added link to the Sequence Project page on the Operator List page, and on a few other pages.
- Segment: Replaced speculation on data type and values used for the Segment column with the actual data type and values used.
October 5, 2020
New pages:
- Window Spool: New page with the description of the Window Spool operator.
Updated pages:
- Added link to the Window Spool page on the Operator List page, and on a few other pages.
- Compute Scalar: Added a description for the built-in function “ForceOrder”.
- Collapse: Corrected a minor typo.
- Nested Loops and Split: Reuploaded flowcharts that were cut off at the edges. (No actual changes).
September 20, 2020
Updated pages:
- Segment: Added a note about the possibility of an empty Group By
- Stream Aggregate: Added description of the special behavior when used in combination with a Window Spool operator; added information about how the ANY aggregate function works.
- Table Scan: Added information on Table Scan on a memory-optimized table.
- Table Scan, Index Scan, Clustered Index Scan, and Columnstore Index Scan: Added the Seek Predicates property, that can be used on these operators if the object scanned is partitioned.
- Index Scan and Clustered Index Scan: Added a warning about potentially incorrect information in the Number of Rows Read property when a PROBE Predicate is used.
August 20, 2020
Updated pages:
- Common Properties: Correction and textual clarification in description of the Memory Usage
August 19, 2020
Updated pages:
- Common Properties: Correction and textual clarification in description of the Memory Fractions
August 17, 2020
New pages:
- Row Count Spool: New page with the description of the Row Count Spool operator.
Updated pages:
- Added link to the Row Count Spool page on the Operator List page, and on a few other pages.
- Compute Scalar: Added descriptions for three built-in functions related to handling of Sparse Columns and Column Sets.
- Table Spool: Clarified the generic description of its three operating modes.
- Index Spool: Clarified the generic description of its two operating modes.
July 18, 2020
Updated pages:
- Compute Scalar: Added remarks about its fixed cost estimates to the list of Operator Properties.
July 17, 2020
New pages:
- Compute Scalar: New page with the description of the Compute Scalar operator.
Updated pages:
- Added link to the Compute Scalar page on the Operator List page.
- Common Properties: Added pointer to Compute Scalar for the generic description of functions in the Defined Values
June 20, 2020
Updated pages:
- Common Properties: Added lots of detail and better explanation for a variety of properties.
- All operator pages:
- Switched order of old and new SSMS icon; and added Plan Explorer icon on operator page that didn’t have it yet.
- Added a marker to properties that are also discussed on the Common Properties page.
- Clarified wording and fixed typos for several properties.
- Hash Match: Added extra information on Estimated CPU Cost and Estimated I/O Cost
- Nested Loops: Added extra details to the description of the prefetching process.
June 15, 2020
New pages:
- Table Scan: New page with the description of the Table Scan operator.
Updated pages:
- Added link to the Table Scan page on the Operator List page.
- Fixed small typos and language errors in the property list on several pages.
May 20, 2020
New pages:
- RID Lookup: New page with the description of the RID Lookup operator.
Updated pages:
- Key Lookup: Added description of unexpected behavior of Estimated Number of Rows, Estimated Number of Rows Per Execution, and Estimated Number of Rows for All Execution properties when a Predicate property is present and corrected the description of the Forced Index
- Added link to the RID Lookup page on the Operator List page, and on a few other pages.
April 21, 2020
Updated pages:
- Plan properties: Added two new sub-properties of the MemoryGrantInfo property, both related to Memory Grant Feedback; added a link to a list of documented values for the NonParallelPlanReason property, and corrected a typo.
April 19, 2020
New pages:
- Key Lookup: New page with the description of the Key Lookup operator.
Updated pages:
- Index Seek: Corrected a minor copy/paste error.
- Added link to the Key Lookup page on the Operator List page, and on a few other pages.
April 12, 2020
Updated pages:
- Generic information: Rewrote a large part of the page and made several small changes, to use proposed new terminology for execution plans instead of the confusing old terminology; also added a note about improved handling of overly long property values in the popup window on newer versions of Management Studio.
- Multiple pages: Changed to use proposed new terminology for execution plans instead of the confusing old terminology. Also made some minor other changes on those pages.
- Columnstore Index Scan: Removed Number of Rows Read from the property list; it was there in error, this operator doesn’t have this property. Also changed the description of the Predicate property to not refer to Number of Rows Read.
- Plan Properties: Added descriptions for the sub-properties of the QueryTimeStats property; added new information for the RetrievedFronCache property; fixed some formatting issues.
April 9, 2020
Updated pages:
- Common Properties: Updated with the improvements in how Management Studio 18.5 displays actual and estimated row count. Also added Estimated Data Size (that I had overlooked before).
July 12, 2019
New pages:
- Clustered Index Seek: New page with the description of the Clustered Index Seek operator.
Updated pages:
- Index Scan: Added reference to Clustered Index Scan in opening text to prevent possible misunderstandings (thanks, Nico!).
- Index Seek: Added the Seek Predicates property to the table of properties; corrected a mistake in the flowchart (thanks, Josh!); corrected a typo (thanks, Nicky!); corrected the spelling of a property in the main text.
- Added link to the Clustered Index Seek page on the Operator List page, and on a few other pages.
July 8, 2019
New pages:
- Index Seek: New page with the description of the Index Seek operator.
Updated pages:
- Index Scan: Added some additional details about Actual Rows Read property, and added the Scan Direction property that I had previously forgotten.
- Added link to the Index Seek page on the Operator List page, and links to both Index Seek and Index Scan on the Common Properties page.
June 10, 2019
New pages:
- Columnstore Index Scan: New page with the description of the Columnstore Index Scan operator.
Updated pages:
- Index Scan: Added note about columnstore and memory-optimized indexes in discussion of Parallel Page Supplier, added note about rowgroup elimination in description of Predicate
- Clustered Index Scan: Added note about rowgroup elimination in description of Predicate property, corrected reference to Parallel Page Supplier in description of Parallelism aware implicit property.
- Added link to the Columnstore Index Scan page on the Operator List page, and on the Index Scan and Clustered Index Scan pages.
June 9, 2019
New pages:
- Clustered Index Scan: New page with the description of the Clustered Index Scan operator.
Updated pages:
- Index Scan: Added handling of deltastore rowgroups to description of columnstore index scan behavior; added description of memory-optimized nonclustered hash index scan behavior; and fixed a few minor issues.
- Added link to the Clustered Index Scan page on the Operator List page (and a few other pages).
June 2, 2019
New pages:
- Index Scan: New page with the description of the Index Scan operator.
Updated pages:
- Added link to the Index Scan page on the Operator List page.
March 18, 2019
New pages:
- Collapse: New page with the description of the Collapse operator.
Updated pages:
- Split: Huge rewrite after I found out that there is not always an action column in the input. I thought it needed this action column to determine how to treat each row, now I have removed that theory and replaced it with a few alternatives.
- Added link to the Collapse page on the Operator List and Split pages.
February 21, 2019
Updated pages:
- Added link to the Split page on the Operator List page (I apparently forgot to save this change when I first made it on February 20).
February 20, 2019
New pages:
- Split: New page with the description of the Split operator.
Updated pages:
- Added link to the Split page on the Operator List page.
February 10, 2019
Updated pages:
- Hash Match: Added some additional information on whether the build phase runs during Init() processing or during the GetNext() processing (thanks, Martin).
Also fixed a minor copy/paste error in a subheading.
February 5, 2019
Updated pages:
- Operator List: Added a column for the new icons as used in Plan Explorer (thanks, Aaron).
- Assert: Fixed a mistake in the flowchart, and a copy/paste error in the text (thanks, Thierry).
February 2, 2019
Updated pages:
- Plan Properties: Added a description for the “SecurityPolicyApplied” property. Thanks to Kendra Little for blogging about this, and to Thierry van Durme for sending me the link to that post!
January 31, 2019
Updated pages:
- Index Spool: Added a description of the “limited parallelism awareness” of this operator, and made two minor single-word changes. Thanks to Erik Darling for sharing the execution plan that made me discover this!
January 14, 2019
Updated pages:
- Hash Match, Merge Join, Nested Loops: Added links to blog posts by Bert Wagner with animated visualization of the algorithms.
January 3, 2019
New pages:
- Adaptive Join: New page with the description of the Adaptive Join operator.
Updated pages:
- Added link to the Adaptive Join page on the Operator List page (and a few other pages).
- Hash Match: Corrected a mistake in the list of implicit properties (two join types were erroneously listed as order-preserving).
December 21, 2018
New pages:
- Bitmap: New page with the description of the Bitmap operator.
Updated pages:
- Added link to the Bitmap page on the Operator List page.
- Hash Match: Removed the Memory Fractions property from the properties list (it has been moved to the Common Properties page).
- Common Properties: Added description of the Memory Fractions and Memory Usage properties.
November 18, 2018
New pages:
- Index Spool: New page with the description of the Index Spool operator.
Updated pages:
- Added link to the Index Spool page on the Operator List page (and a few other pages).
- Table Spool: Correction to the “Order-preserving” property. Also fixed a few typos.
- Added or corrected links to other pages on several pages.
November 15, 2018
Updated pages:
- Table Spool: Small correction to the flowchart in the “Actual Logic” section.
November 13, 2018
Updated pages:
- Table Spool: Corrected the links for the “operator properties” and “implicit properties” tables (thanks, Jan!).
November 11, 2018
Updated pages:
- Updated the Common properties and Plan properties pages with properties found in the last Cumulative Update of SQL Server. (SQL Server 2017, CU12). Some of these are new, others I had originally overlooked.
November 7, 2018
New pages:
- Table Spool: New page with the description of the Table Spool operator.
Updated pages:
- Added link to the Table Spool page on the Operator List page (and a few other pages).
October 27, 2018
Changed the RSS feed to include all pages on this site instead of only the blog posts.
September 24, 2018
Updated pages:
- Operator List: Replaced all SQL Operations Studio operator icons with the (slightly changed) operator icons as displayed in Azure Data Studio.
- Assert, Hash Match, Merge Join, Nested Loops, Segment, Stream Aggregate: Replaced SQL Operations Studio operator icon with the Azure Data Studio version.
September 10, 2018
Updated pages:
- Home page: Replaced link to Grant Fritchey’s execution plans book to reference the third edition.
July 30, 2018
New pages:
- Assert: New page with the description of the Assert operator.
Updated pages:
- Added link to the Assert page on the Operator List page.
- Minor layout change on the Hash Match page.
June 27, 2018
New pages:
- Segment: New page with the description of the Segment operator.
Updated pages:
- Added link to the Segment page on various other pages.
June 4, 2018
New pages:
- Plan properties: Formerly a section on the generic information page, now a page of its own.
Updated pages:
- Generic information: Split off the section on plan properties to its own page.
- Homepage: Added link to plan properties.
Navigation:
- Added menu with direct access to relevant pages (thanks, Joshua!)
June 2, 2018
New pages:
Updated pages:
- Generic information: Fixed a copy/paste error (thanks, Richard!); added additional information to plan property RetrievedFromCache; added plan properties StatementParameterizationType and StatementSqlHandle.
- Homepage: Added link to change log.
May 31, 2018
New pages:
- Generic pages: Homepage, Common properties, Generic information, Operator List.
- Operator pages: Hash Match, Merge Join, Nested Loops, Stream Aggregate.
- Background pages: Logical join operations.