接下来的偏移行如何工作

时间:2018-03-30 13:14:43

标签: sql-server offset

我在存储过程中有以下select语句:

SELECT * 
FROM dbo.vehicle
ORDER BY date
OFFSET ((@num_pages - 1) * @nb_elements) ROWS FETCH NEXT (@nb_elements) ROWS ONLY 

其中@num_pages@nb_elements是我的存储过程条目参数。

SELECT * FROM dbo.vehicle是否会被完全计算,然后才会返回我的@nb_elements?或者,当SELECT * FROM dbo.vehicle行到达时,@nb_elements语句是否会停止?

我在使用这种语句的存储过程中遇到了巨大的性能问题。

1 个答案:

答案 0 :(得分:0)

对于这种类型的语句,您不会遇到巨大的性能问题,因为这不是有效的语句。 OFFSET仅作为ORDER BY的一部分有效。

对其进行排序,向下移动OFFSET行数,然后返回ROWS FETCH NEXT。向下移动OFFSET行数并不会影响您的表现。

order by