我正在尝试建立分页机制。我正在使用创建如下 SQL 的 ORM:
SELECT * FROM
(SELECT t1.colX, t2.colY
ROW_NUMBER() OVER (ORDER BY t1.col3) AS row
FROM Table1 t1
INNER JOIN Table2 t2
ON t1.col1=t2.col2
)a
WHERE row >= n AND row <= m
Table1 有 >500k 行,Table2 有 >10k 记录
我直接在 SQL Server 2008 R2 Management Studio 中执行查询。子查询需要 2-3 秒才能执行,但整个查询需要 > 2 分钟。
我知道 SQL Server 2012 接受该OFFSET .. LIMIT ..
选项,但我无法升级软件。
任何人都可以帮助我提高查询的性能或建议可以通过 ORM 软件强加的其他分页机制。
Update:
测试Roman Pekar的解决方案(参见解决方案的评论)证明 ROW_NUMBER() 可能不是性能问题的原因。不幸的是,问题仍然存在。
谢谢