add remove split language show hidden hide
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
8335 rows affected
UserId
1
2
3
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 TOP (@PageSize) U.UserId&#xa;FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PriorUserId&#xa; UNION&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PriorUserId&#xa;) U&#xa;ORDER BY U.UserId" StatementId="1" StatementCompId="7" StatementType="SELECT" StatementSqlHandle="0x09007D7812E5B30E07309FE3ECA79C3EFB390000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="965578478" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0128539" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x8D4E183CF37EAC3B" QueryPlanHash="0x7D8DCD1C1E278338" 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="40" CompileTime="31" CompileCPU="15" CompileMemory="280"><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="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0128539" 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"><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1003"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="1" PhysicalOp="Merge Join" LogicalOp="Union" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.0237702" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0128536" 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" 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="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimateIO="0" EstimateCPU="0.005" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032968" 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" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></GroupBy><RelOp NodeId="3" 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="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><SeekPredicates><SeekPredicateNew><SeekKeys><StartRange ScanType="GT"><RangeColumns><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></RangeColumns><RangeExpressions><ScalarOperator ScalarString="[@PriorUserId]"><Identifier><ColumnReference Column="@PriorUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></StreamAggregate></RelOp><RelOp NodeId="4" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimateIO="0" EstimateCPU="0.003335" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032841" 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" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></GroupBy><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="[@PriorUserId]"><Identifier><ColumnReference Column="@PriorUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></StreamAggregate></RelOp></Merge></RelOp></Top></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@PriorUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(0)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML>
UserId
4
5
6
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 TOP (@PageSize) U.UserId&#xa;FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PriorUserId&#xa; UNION&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PriorUserId&#xa;) U&#xa;ORDER BY U.UserId" StatementId="2" StatementCompId="7" StatementType="SELECT" StatementSqlHandle="0x09007D7812E5B30E07309FE3ECA79C3EFB390000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="965578478" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0128539" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x8D4E183CF37EAC3B" QueryPlanHash="0x7D8DCD1C1E278338" 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="40" CompileTime="31" CompileCPU="15" CompileMemory="280"><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="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0128539" 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"><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1003"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="1" PhysicalOp="Merge Join" LogicalOp="Union" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.0237702" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0128536" 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" 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="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimateIO="0" EstimateCPU="0.005" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032968" 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" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></GroupBy><RelOp NodeId="3" 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="[@PriorUserId]"><Identifier><ColumnReference Column="@PriorUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></StreamAggregate></RelOp><RelOp NodeId="4" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimateIO="0" EstimateCPU="0.003335" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032841" 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" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></GroupBy><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="[@PriorUserId]"><Identifier><ColumnReference Column="@PriorUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></StreamAggregate></RelOp></Merge></RelOp></Top></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@PriorUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(3)"></ColumnReference></ParameterList></QueryPlan></StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML>
UserId
301
302
304
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 TOP (@PageSize) U.UserId&#xa;FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PriorUserId&#xa; UNION&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PriorUserId&#xa;) U&#xa;ORDER BY U.UserId" StatementId="3" StatementCompId="7" StatementType="SELECT" StatementSqlHandle="0x09007D7812E5B30E07309FE3ECA79C3EFB390000000000000000000000000000000000000000000000000000" DatabaseContextSettingsId="2" ParentObjectId="965578478" StatementParameterizationType="0" RetrievedFromCache="true" StatementSubTreeCost="0.0128539" StatementEstRows="3" SecurityPolicyApplied="false" StatementOptmLevel="FULL" QueryHash="0x8D4E183CF37EAC3B" QueryPlanHash="0x7D8DCD1C1E278338" 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="40" CompileTime="31" CompileCPU="15" CompileMemory="280"><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="Top" LogicalOp="Top" EstimateRows="3" EstimateIO="0" EstimateCPU="3e-07" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0128539" 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"><TopExpression><ScalarOperator ScalarString="CONVERT_IMPLICIT(bigint,[@PageSize],0)"><Identifier><ColumnReference Column="ConstExpr1003"><ScalarOperator><Convert DataType="bigint" Style="0" Implicit="1"><ScalarOperator><Identifier><ColumnReference Column="@PageSize"></ColumnReference></Identifier></ScalarOperator></Convert></ScalarOperator></ColumnReference></Identifier></ScalarOperator></TopExpression><RelOp NodeId="1" PhysicalOp="Merge Join" LogicalOp="Union" EstimateRows="3" EstimateRowsWithoutRowGoal="6667" EstimateIO="0" EstimateCPU="0.0237702" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0128536" 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" 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="2" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="3.75056" EstimateRowsWithoutRowGoal="5000" EstimateIO="0" EstimateCPU="0.005" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032968" 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" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableA]" Alias="[A]" Column="UserId"></ColumnReference></GroupBy><RelOp NodeId="3" 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="[@PriorUserId]"><Identifier><ColumnReference Column="@PriorUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></StreamAggregate></RelOp><RelOp NodeId="4" PhysicalOp="Stream Aggregate" LogicalOp="Aggregate" EstimateRows="1" EstimateRowsWithoutRowGoal="3335" EstimateIO="0" EstimateCPU="0.003335" AvgRowSize="11" EstimatedTotalSubtreeCost="0.0032841" 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" ActualEndOfScans="0" ActualExecutions="1" ActualExecutionMode="Row"></RunTimeCountersPerThread></RunTimeInformation><StreamAggregate><DefinedValues></DefinedValues><GroupBy><ColumnReference Database="[fiddle_b2ac55035a3e43aca7e14c408b28c15c]" Schema="[dbo]" Table="[TableB]" Alias="[B]" Column="UserId"></ColumnReference></GroupBy><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="[@PriorUserId]"><Identifier><ColumnReference Column="@PriorUserId"></ColumnReference></Identifier></ScalarOperator></RangeExpressions></StartRange></SeekKeys></SeekPredicateNew></SeekPredicates></IndexScan></RelOp></StreamAggregate></RelOp></Merge></RelOp></Top></RelOp><ParameterList><ColumnReference Column="@PageSize" ParameterDataType="int" ParameterCompiledValue="(3)" ParameterRuntimeValue="(3)"></ColumnReference><ColumnReference Column="@PriorUserId" ParameterDataType="int" ParameterCompiledValue="(0)" ParameterRuntimeValue="(300)"></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="SELECT U.UserId&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek from start, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek from start, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek from start, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek forward, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PreviousMaxUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PreviousMaxUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek forward, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek forward, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek forward, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PreviousMaxUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PreviousMaxUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek forward, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek forward, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek forward, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PreviousMaxUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PreviousMaxUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek forward, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek forward, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek same page, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt;= @PreviousMinUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt;= @PreviousMinUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek same page, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek same page, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek backwards, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT U.UserId&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &lt; @PreviousMinUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &lt; @PreviousMinUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId DESC&#xa; OFFSET @Offset ROWS&#xa; FETCH NEXT @PageSize ROWS ONLY&#xa; ) U&#xa; 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(&apos;Seek backwards, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek backwards, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek backwards, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT U.UserId&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &lt; @PreviousMinUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &lt; @PreviousMinUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId DESC&#xa; OFFSET @Offset ROWS&#xa; FETCH NEXT @PageSize ROWS ONLY&#xa; ) U&#xa; 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(&apos;Seek backwards, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1006"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek backwards, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek from start, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek from start, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek from start, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek from start, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek from start, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek from start, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek forward, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PreviousMaxUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PreviousMaxUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek forward, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek forward, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek forward, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PreviousMaxUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PreviousMaxUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek forward, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek forward, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek forward, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PreviousMaxUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PreviousMaxUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek forward, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek forward, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek forward, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; WHERE A.UserId &gt; @PreviousMaxUserId&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; WHERE B.UserId &gt; @PreviousMaxUserId&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek forward, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek forward, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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&#xa; , @PageNumber AS PageNumber&#xa; , CONCAT(&apos;Seek from start, offset &apos;, @Offset) AS Algorithm&#xa; FROM (&#xa; SELECT A.UserId&#xa; FROM TableA A&#xa; UNION ALL&#xa; SELECT B.UserId&#xa; FROM TableB B&#xa; ) U&#xa; GROUP BY U.UserId&#xa; ORDER BY U.UserId&#xa; OFFSET @Offset ROWS&#xa; 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(&apos;Seek from start, offset &apos;,CONVERT_IMPLICIT(varchar(12),[@Offset],0))"><Identifier><ColumnReference Column="ConstExpr1004"><ScalarOperator><Intrinsic FunctionName="concat"><ScalarOperator><Const ConstValue="&apos;Seek from start, offset &apos;"></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&#xa; EXEC GetPagedUserIdsExtended -- &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; Here it is&#xa; @PageSize,&#xa; @PageNumber,&#xa; @PreviousPageNumber,&#xa; @PreviousMinUserId,&#xa; @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)