gpt4 book ai didi

sql - 为什么我的查询在获取偏移量较大的记录时速度很慢?

转载 作者:行者123 更新时间:2023-12-04 14:02:45 24 4
gpt4 key购买 nike

我有查询按页码获取记录,如下所示,

SELECT
FirstName = R.FirstName,
LastName = R.LastName,
CountryId = R.CountryID,
......
FROM Resource AS R
WHERE ...
ORDER BY LastName, FirstName
OFFSET 10 * (@PageNumber - 1) ROWS
FETCH NEXT 10 ROWS ONLY

记录总数超过30,000。

  • @PageNumber = 1时,运行时间小于1s,几乎是瞬间。
  • @PageNumber = 500时,运行时间约为4s。
  • @PageNumber = 1000时,运行时间小于12s。
  • @PageNumber = 2000时,运行时间小于20s。
  • @PageNumber = 3000时,运行时间小于28s。

我想知道为什么获取偏移量大的记录比获取偏移量小的记录要慢得多,因为获取的行总数是相同的 (10)。看起来查询获取前面记录的速度比坐在后面的记录快得多。还是查询有问题?

最佳答案

正如文档所述 Offset Fetch (大胆强调我的):

OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }

Specifies the number of rows to skip, before starting to return rows from the query expression. The argument for the OFFSET clause can be an integer or expression that is greater than or equal to zero. You can use ROW and ROWS interchangeably.

这意味着将获取所有行,但会跳过您作为参数传递的行数。所以更多的线路,更多的时间。就这么简单。

关于sql - 为什么我的查询在获取偏移量较大的记录时速度很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20136563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com