3
为什么OFFSET…FETCH与旧式ROW_NUMBER方案之间的执行计划有所不同?
OFFSET ... FETCHSQL Server 2012引入的新模型提供了简单,快速的分页。考虑到两种形式在语义上是相同且非常普遍的,为什么根本没有区别? 人们会假设优化器可以识别这两者,并(最大程度地)优化它们。 这是一个非常简单的情况,OFFSET ... FETCH根据成本估算,速度提高了约2倍。 SELECT * INTO #objects FROM sys.objects SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY object_id) r FROM #objects ) x WHERE r >= 30 AND r < (30 + 10) ORDER BY object_id SELECT * FROM #objects ORDER BY …