| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek from start, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="1" StatementCompId="31" StatementType="SELECT" StatementSqlHandle="0x090019F46B3D5C4B13E60A60C67A02AF4D860000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0xDBEA087636977705" QueryPlanHash="0x5843A168DB7EC108" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="480"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="33" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek from start, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek from start, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="300" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="377" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="226" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="226" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="152" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="152" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(297)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(100)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="2" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 446 |
100 |
Seek from start, offset 297 |
Initial request, relative to origin (costly, but necessary) |
| 448 |
100 |
Seek from start, offset 297 |
Initial request, relative to origin (costly, but necessary) |
| 450 |
100 |
Seek from start, offset 297 |
Initial request, relative to origin (costly, but necessary) |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek forward, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId > @PreviousMaxUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId > @PreviousMaxUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="3" StatementCompId="41" StatementType="SELECT" StatementSqlHandle="0x0900FB55315C719AF5A33D6C58E5D58C20B30000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x78D1E731A3A08255" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="31" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek forward, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek forward, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="5" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(101)"></ColumnReference><ColumnReference Column="@PreviousMaxUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(450)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="4" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 451 |
101 |
Seek forward, offset 0 |
Next page |
| 452 |
101 |
Seek forward, offset 0 |
Next page |
| 454 |
101 |
Seek forward, offset 0 |
Next page |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek forward, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId > @PreviousMaxUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId > @PreviousMaxUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="5" StatementCompId="41" StatementType="SELECT" StatementSqlHandle="0x0900FB55315C719AF5A33D6C58E5D58C20B30000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x78D1E731A3A08255" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="31" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek forward, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek forward, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="9" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="12" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="8" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="8" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="5" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="5" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(6)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(104)"></ColumnReference><ColumnReference Column="@PreviousMaxUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(454)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="6" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><WaitStats><Wait WaitType="MEMORY_ALLOCATION_EXT" WaitTimeMs="15" WaitCount="4"></Wait></WaitStats><QueryTimeStats ElapsedTime="15" CpuTime="15"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 464 |
104 |
Seek forward, offset 6 |
Skip ahead several pages |
| 466 |
104 |
Seek forward, offset 6 |
Skip ahead several pages |
| 468 |
104 |
Seek forward, offset 6 |
Skip ahead several pages |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek forward, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId > @PreviousMaxUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId > @PreviousMaxUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="7" StatementCompId="41" StatementType="SELECT" StatementSqlHandle="0x0900FB55315C719AF5A33D6C58E5D58C20B30000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x78D1E731A3A08255" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="31" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek forward, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek forward, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="5" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(105)"></ColumnReference><ColumnReference Column="@PreviousMaxUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(468)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="8" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 469 |
105 |
Seek forward, offset 0 |
Next page |
| 470 |
105 |
Seek forward, offset 0 |
Next page |
| 472 |
105 |
Seek forward, offset 0 |
Next page |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek same page, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId >= @PreviousMinUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId >= @PreviousMinUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="9" StatementCompId="36" StatementType="SELECT" StatementSqlHandle="0x09001FE2E20F393058465BCC7528211D52A50000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x1BB67DF5DE6D2997" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="32" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek same page, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek same page, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="5" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GE"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMinUserId]"><Identifier><ColumnReference Column="@PreviousMinUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GE"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMinUserId]"><Identifier><ColumnReference Column="@PreviousMinUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(105)"></ColumnReference><ColumnReference Column="@PreviousMinUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(469)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="10" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 469 |
105 |
Seek same page, offset 0 |
Same page |
| 470 |
105 |
Seek same page, offset 0 |
Same page |
| 472 |
105 |
Seek same page, offset 0 |
Same page |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek backwards, offset ', @Offset) AS Algorithm
 FROM (
 SELECT U.UserId
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId < @PreviousMinUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId < @PreviousMinUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId DESC
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY
 ) U
 ORDER BY U.UserId" StatementId="11" StatementCompId="46" StatementType="SELECT" StatementSqlHandle="0x09006F7E0CA7CD20FF9A0773E5D7BB82769D0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0235315" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x81D09C4D8E8A0A69" QueryPlanHash="0x06D330F59E2EE807" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" MemoryGrant="1024" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="40" CompileTime="0" CompileCPU="0" CompileMemory="528"><MemoryGrantInfo SerialRequiredMemory="512" SerialDesiredMemory="544" RequiredMemory="512" DesiredMemory="544" RequestedMemory="1024" GrantWaitTime="0" MaxQueryMemory="666288" GrantedMemory="1024" MaxUsedMemory="16"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-07" AvgRowSize="32" EstimatedTotalSubtreeCost="0.0235315" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek backwards, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek backwards, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Sort" LogicalOp="Sort" EstimateRows="1" EstimateIO="0.0112613" EstimateCPU="0.000100011" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0235314" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><MemoryFractions Input="1" Output="1"></MemoryFractions><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" InputMemoryGrant="1024" OutputMemoryGrant="640" UsedMemoryGrant="16" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Sort Distinct="0"><OrderBy><OrderByColumn Ascending="1"><ColumnReference Column="Union1002"></ColumnReference></OrderByColumn></OrderBy><RelOp NodeId="2" PhysicalOp="Top" LogicalOp="Top" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0121701" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="3" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="1" EstimateIO="0" EstimateCPU="1.5e-06" AvgRowSize="11" EstimatedTotalSubtreeCost="0.01217" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="4" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="2" EstimateIO="0" EstimateCPU="0.0056023" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0121685" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="5" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.003125" EstimateCPU="0.0001581" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="4" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="4" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="BACKWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><EndRange ScanType="LT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMinUserId]"><Identifier><ColumnReference Column="@PreviousMinUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></EndRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="6" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.003125" EstimateCPU="0.0001581" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="2" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="2" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="BACKWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><EndRange ScanType="LT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMinUserId]"><Identifier><ColumnReference Column="@PreviousMinUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></EndRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></Sort></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(104)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@PreviousMinUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(469)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="12" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 464 |
104 |
Seek backwards, offset 0 |
Prior page |
| 466 |
104 |
Seek backwards, offset 0 |
Prior page |
| 468 |
104 |
Seek backwards, offset 0 |
Prior page |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek backwards, offset ', @Offset) AS Algorithm
 FROM (
 SELECT U.UserId
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId < @PreviousMinUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId < @PreviousMinUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId DESC
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY
 ) U
 ORDER BY U.UserId" StatementId="13" StatementCompId="46" StatementType="SELECT" StatementSqlHandle="0x09006F7E0CA7CD20FF9A0773E5D7BB82769D0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0235315" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x81D09C4D8E8A0A69" QueryPlanHash="0x06D330F59E2EE807" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" MemoryGrant="1024" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="40" CompileTime="0" CompileCPU="0" CompileMemory="528"><MemoryGrantInfo SerialRequiredMemory="512" SerialDesiredMemory="544" RequiredMemory="512" DesiredMemory="544" RequestedMemory="1024" GrantWaitTime="0" MaxQueryMemory="666288" GrantedMemory="1024" MaxUsedMemory="16"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-07" AvgRowSize="32" EstimatedTotalSubtreeCost="0.0235315" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek backwards, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek backwards, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Sort" LogicalOp="Sort" EstimateRows="1" EstimateIO="0.0112613" EstimateCPU="0.000100011" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0235314" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><MemoryFractions Input="1" Output="1"></MemoryFractions><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRebinds="1" ActualRewinds="0" ActualEndOfScans="1" ActualExecutions="1" InputMemoryGrant="1024" OutputMemoryGrant="640" UsedMemoryGrant="16" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Sort Distinct="0"><OrderBy><OrderByColumn Ascending="1"><ColumnReference Column="Union1002"></ColumnReference></OrderByColumn></OrderBy><RelOp NodeId="2" PhysicalOp="Top" LogicalOp="Top" EstimateRows="1" EstimateIO="0" EstimateCPU="1e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0121701" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="3" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="1" EstimateIO="0" EstimateCPU="1.5e-06" AvgRowSize="11" EstimatedTotalSubtreeCost="0.01217" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="12" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="4" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="2" EstimateIO="0" EstimateCPU="0.0056023" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0121685" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="16" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.003125" EstimateCPU="0.0001581" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="10" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="10" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="BACKWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><EndRange ScanType="LT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMinUserId]"><Identifier><ColumnReference Column="@PreviousMinUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></EndRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="6" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.003125" EstimateCPU="0.0001581" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="7" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="7" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="BACKWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><EndRange ScanType="LT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMinUserId]"><Identifier><ColumnReference Column="@PreviousMinUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></EndRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></Sort></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(100)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(9)"></ColumnReference><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@PreviousMinUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(464)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="14" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 446 |
100 |
Seek backwards, offset 9 |
Skip back several pages |
| 448 |
100 |
Seek backwards, offset 9 |
Skip back several pages |
| 450 |
100 |
Seek backwards, offset 9 |
Skip back several pages |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek from start, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="15" StatementCompId="31" StatementType="SELECT" StatementSqlHandle="0x090019F46B3D5C4B13E60A60C67A02AF4D860000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0xDBEA087636977705" QueryPlanHash="0x5843A168DB7EC108" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="480"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="33" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek from start, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek from start, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="9" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="13" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="7" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="7" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="7" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="7" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(6)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(3)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="16" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 10 |
3 |
Seek from start, offset 6 |
Skip way back, retrieved relative to origin |
| 12 |
3 |
Seek from start, offset 6 |
Skip way back, retrieved relative to origin |
| 13 |
3 |
Seek from start, offset 6 |
Skip way back, retrieved relative to origin |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek from start, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="17" StatementCompId="31" StatementType="SELECT" StatementSqlHandle="0x090019F46B3D5C4B13E60A60C67A02AF4D860000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0xDBEA087636977705" QueryPlanHash="0x5843A168DB7EC108" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="480"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="33" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek from start, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek from start, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="6" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="4" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="4" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(1)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="18" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 1 |
1 |
Seek from start, offset 0 |
First page, relative to origin |
| 2 |
1 |
Seek from start, offset 0 |
First page, relative to origin |
| 3 |
1 |
Seek from start, offset 0 |
First page, relative to origin |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek forward, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId > @PreviousMaxUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId > @PreviousMaxUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="19" StatementCompId="41" StatementType="SELECT" StatementSqlHandle="0x0900FB55315C719AF5A33D6C58E5D58C20B30000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x78D1E731A3A08255" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="31" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek forward, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek forward, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="4" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="2" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="2" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(2)"></ColumnReference><ColumnReference Column="@PreviousMaxUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(3)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="20" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 4 |
2 |
Seek forward, offset 0 |
Next page |
| 5 |
2 |
Seek forward, offset 0 |
Next page |
| 6 |
2 |
Seek forward, offset 0 |
Next page |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek forward, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId > @PreviousMaxUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId > @PreviousMaxUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="21" StatementCompId="41" StatementType="SELECT" StatementSqlHandle="0x0900FB55315C719AF5A33D6C58E5D58C20B30000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x78D1E731A3A08255" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="31" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek forward, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek forward, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="6660" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="8326" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="4996" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="20" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="4996" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3331" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="14" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3331" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(6657)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(2222)"></ColumnReference><ColumnReference Column="@PreviousMaxUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(6)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="22" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="3" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 9996 |
2222 |
Seek forward, offset 6657 |
Skip ahead, near the end (costly scan) |
| 9997 |
2222 |
Seek forward, offset 6657 |
Skip ahead, near the end (costly scan) |
| 9998 |
2222 |
Seek forward, offset 6657 |
Skip ahead, near the end (costly scan) |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek forward, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId > @PreviousMaxUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId > @PreviousMaxUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="23" StatementCompId="41" StatementType="SELECT" StatementSqlHandle="0x0900FB55315C719AF5A33D6C58E5D58C20B30000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x78D1E731A3A08255" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="31" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek forward, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek forward, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="2" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="1" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="1" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(2223)"></ColumnReference><ColumnReference Column="@PreviousMaxUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(9998)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="24" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="1" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 10000 |
2223 |
Seek forward, offset 0 |
Next (last) page |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek forward, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 WHERE A.UserId > @PreviousMaxUserId
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 WHERE B.UserId > @PreviousMaxUserId
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="25" StatementCompId="41" StatementType="SELECT" StatementSqlHandle="0x0900FB55315C719AF5A33D6C58E5D58C20B30000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x78D1E731A3A08255" QueryPlanHash="0xD3D267B832B43C5B" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="504"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="31" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek forward, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek forward, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Seek" LogicalOp="Index Seek" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="2" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PreviousMaxUserId]"><Identifier><ColumnReference Column="@PreviousMaxUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(0)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(2224)"></ColumnReference><ColumnReference Column="@PreviousMaxUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(10000)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="26" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="0" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="SELECT U.UserId
 , @PageNumber AS PageNumber
 , CONCAT('Seek from start, offset ', @Offset) AS Algorithm
 FROM (
 SELECT A.UserId
 FROM TableA A
 UNION ALL
 SELECT B.UserId
 FROM TableB B
 ) U
 GROUP BY U.UserId
 ORDER BY U.UserId
 OFFSET @Offset ROWS
 FETCH NEXT @PageSize ROWS ONLY" StatementId="27" StatementCompId="31" StatementType="SELECT" StatementSqlHandle="0x090019F46B3D5C4B13E60A60C67A02AF4D860000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="981578535" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0130213" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0xDBEA087636977705" QueryPlanHash="0x5843A168DB7EC108" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="NoParallelPlansInDesktopOrExpressEdition" CachedPlanSize="32" CompileTime="0" CompileCPU="0" CompileMemory="480"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><OptimizerStatsUsage><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableB]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[PK_TableA]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableA_UserId]" Table="[TableA]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo><StatisticsInfo LastUpdate="2023-11-29T20:38:41.22" ModificationCount="0" SamplingPercent="100" Statistics="[IX_TableB_UserId]" Table="[TableB]" Schema="[dbo]" Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]"></StatisticsInfo></OptimizerStatsUsage><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Compute Scalar" LogicalOp="Compute Scalar" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="33" EstimatedTotalSubtreeCost="0.0130213" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Column="Expr1003"></ColumnReference></OutputList><ComputeScalar><DefinedValues><DefinedValue><ColumnReference Column="Expr1003"></ColumnReference><ScalarOperator ScalarString="concat('Seek from start, offset ',CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="'Seek from start, offset '"></Const></ScalarOperator><ScalarOperator><Convert DataType="varchar" Length="12" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></Intrinsic></ScalarOperator></ColumnReference></Identifier></ScalarOperator></DefinedValue></DefinedValues><RelOp NodeId="1" PhysicalOp="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.013021" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Top RowCount="0" IsPercent="0" WithTies="0"><OffsetExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@Offset],0)"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@Offset"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></OffsetExpression><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1005"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.007501" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130207" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="6667" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Column="Union1002"></ColumnReference></GroupBy><RelOp NodeId="3" PhysicalOp="Merge Join" LogicalOp="Concatenation" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="8335" EstimateIO="0" EstimateCPU="0.023937" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0130173" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Column="Union1002"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="8335" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Merge><DefinedValues><DefinedValue><ColumnReference Column="Union1002"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><RelOp NodeId="4" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimatedRowsRead="5000" EstimateIO="0.0157176" EstimateCPU="0.005657" AvgRowSize="11" EstimatedTotalSubtreeCost="0.00329305" TableCardinality="5000" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="5000" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="20" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="5000" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Index="[IX_TableA_UserId]" Alias="[A]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp><RelOp NodeId="5" PhysicalOp="Index Scan" LogicalOp="Index Scan" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimatedRowsRead="3335" EstimateIO="0.0112731" EstimateCPU="0.0038255" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="3335" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="3335" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="1" ActualLogicalReads="14" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualRowsRead="3335" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><IndexScan Ordered="1" ScanDirection="FORWARD" ForcedIndex="0" ForceSeek="0" ForceScan="0" NoExpandHint="0" Storage="RowStore"><DefinedValues><DefinedValue><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></DefinedValue></DefinedValues><Object Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Index="[IX_TableB_UserId]" Alias="[B]" IndexKind="NonClustered" Storage="RowStore"></Object></IndexScan></RelOp></Merge></RelOp></StreamAggregate></RelOp></Top></RelOp></ComputeScalar></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@Offset" ParameterDataType="int" ParameterRuntimeValue="(6666)"></ColumnReference><ColumnReference Column="@PageNumber" ParameterDataType="int" ParameterCompiledValue="(100)" ParameterRuntimeValue="(2223)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| Microsoft SQL Server 2005 XML Showplan |
| <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.564" Build="16.0.1000.6"><BatchSequence><Batch><Statements><StmtSimple StatementText="INSERT @Results
 EXEC GetPagedUserIdsExtended -- <<<<<<<<<< Here it is
 @PageSize,
 @PageNumber,
 @PreviousPageNumber,
 @PreviousMinUserId,
 @PreviousMaxUserId" StatementId="28" StatementCompId="14" StatementType="INSERT EXEC" StatementSqlHandle="0x09004572ED2D00FF578F90D0DE180D16EC1C0000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="1" ParentObjectId="0" BatchSqlHandle="0x02000000247DB328FAC8669639C663A023D91A30CBDFDC4D0000000000000000000000000000000000000000" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0132841" StatementEstRows="1" SecurityPolicyApplied="false" StatementOptmLevel="TRIVIAL" QueryHash="0xD47172BCA499D2AE" QueryPlanHash="0xFA40A18CCC51CDA8" CardinalityEstimationModelVersion="160"><StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="true" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false"></StatementSetOptions><QueryPlan DegreeOfParallelism="0" NonParallelPlanReason="TableVariableTransactionsDoNotSupportParallelNestedTransaction" CachedPlanSize="24" CompileTime="0" CompileCPU="0" CompileMemory="336"><MemoryGrantInfo SerialRequiredMemory="0" SerialDesiredMemory="0" GrantedMemory="0" MaxUsedMemory="0"></MemoryGrantInfo><OptimizerHardwareDependentProperties EstimatedAvailableMemoryGrant="1258238" EstimatedPagesCached="78639" EstimatedAvailableDegreeOfParallelism="1" MaxCompileMemory="1227096"></OptimizerHardwareDependentProperties><TraceFlags IsCompileTime="1"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><TraceFlags IsCompileTime="0"><TraceFlag Value="460" Scope="Global"></TraceFlag><TraceFlag Value="8017" Scope="Global"></TraceFlag></TraceFlags><QueryTimeStats ElapsedTime="0" CpuTime="0"></QueryTimeStats><RelOp NodeId="0" PhysicalOp="Table Insert" LogicalOp="Insert" EstimateRows="1" EstimateIO="0.01" EstimateCPU="1e-06" AvgRowSize="9" EstimatedTotalSubtreeCost="0.0132841" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="1" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><Update DMLRequestSort="0"><Object Table="[@Results]" Storage="RowStore"></Object><SetPredicate><ScalarOperator ScalarString="[UserId] = [Parameter Table].[UserId] as [ParameterTable].[UserId],[PageNumber] = [Parameter Table].[PageNumber] as [ParameterTable].[PageNumber],[Algorithm] = [Parameter Table].[Algorithm] as [ParameterTable].[Algorithm]"><ScalarExpressionList><ScalarOperator><MultipleAssign><Assign><ColumnReference Column="UserId"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="PageNumber"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference></Identifier></ScalarOperator></Assign><Assign><ColumnReference Column="Algorithm"></ColumnReference><ScalarOperator><Identifier><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></Identifier></ScalarOperator></Assign></MultipleAssign></ScalarOperator></ScalarExpressionList></ScalarOperator></SetPredicate><RelOp NodeId="1" PhysicalOp="Parameter Table Scan" LogicalOp="Parameter Table Scan" EstimateRows="1" EstimatedRowsRead="1" EstimateIO="0.0032035" EstimateCPU="7.96e-05" AvgRowSize="69" EstimatedTotalSubtreeCost="0.0032831" TableCardinality="0" Parallel="0" EstimateRebinds="0" EstimateRewinds="0" EstimatedExecutionMode="Row"><OutputList><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="UserId"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="PageNumber"></ColumnReference><ColumnReference Table="[Parameter Table]" Alias="[ParameterTable]" Column="Algorithm"></ColumnReference></OutputList><RunTimeInformation><RunTimeCountersPerThread Thread="0" ActualRows="1" Batches="0" ActualElapsedms="0" ActualCPUms="0" ActualScans="0" ActualLogicalReads="0" ActualPhysicalReads="0" ActualReadAheads="0" ActualLobLogicalReads="0" ActualLobPhysicalReads="0" ActualLobReadAheads="0" ActualEndOfScans="1" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><ParameterTableScan></ParameterTableScan></RelOp></Update></RelOp></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML> |
| UserId |
PageNumber |
Algorithm |
(No column name) |
| 10000 |
2223 |
Seek from start, offset 6666 |
Prior (last) page (requires a costly scan from start) |