【发布时间】:2013-10-07 18:02:01
【问题描述】:
我正在尝试使用分页,我在 SO 中找到了完美的链接
https://stackoverflow.com/a/109290/1481690
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY OrderDate ) AS RowNum, *
FROM Orders
WHERE OrderDate >= '1980-01-01'
) AS RowConstrainedResult
WHERE RowNum >= 1
AND RowNum < 20
ORDER BY RowNum
我正在尝试将完全相同的查询与我的内部查询中的几个表的附加连接一起使用。
在以下场景中很少遇到性能问题
WHERE RowNum >= 1
AND RowNum < 20 ==>executes faster approx 2 sec
WHERE RowNum >= 1000
AND RowNum < 1010 ==> more time approx 10 sec
WHERE RowNum >= 30000
AND RowNum < 30010 ==> more time approx 17 sec
每次我选择 10 行但时间差很大。有什么想法或建议吗?
我选择这种方法作为动态绑定列并形成查询。有没有其他更好的方法可以在 SQl Server 2008 中组织分页查询。
有什么方法可以提高查询的性能吗?
谢谢
【问题讨论】:
-
显示您正在运行的完整查询并提供
CREATE TABLE,包括所涉及表的索引。 -
@Peru,orders 表的结构是什么?
标签: sql performance sql-server-2008 pagination