我有一个select语句,检索大约1000条记录 我想修改它只返回@startIndex和@count定义的一些记录 例如:如果我说@ startIndex = 20和@count = 20 结果将是:从第21记录到第40记 我尝试制作它,但它需要同样的时间,就像我检索1000记录
最好的方法是什么
答案 0 :(得分:1)
这通常称为 Paging ,如果你谷歌搜索'sql server paging',有很多样本,例如this MSDN blog post。
答案 1 :(得分:1)
WITH data AS (SELECT DISTINCT name FROM sysobjects),
ranked AS (SELECT ROW_NUMBER() OVER (ORDER BY name) rownum, * FROM data)
SELECT * FROM ranked
WHERE rownum BETWEEN @startIndex + 1 AND @startIndex + @count
ORDER BY rownum