ROW_NUMBER()OVER不够快,结果集很大,有什么好的解决方案吗?
我使用ROW_NUMBER()对我的网站内容进行分页,当您单击最后一页时,它超时,因为SQL Server需要太长时间才能完成搜索。
已经有一篇有关此问题的文章,但似乎还没有完美的解决方案。
http://weblogs.asp.net/eporter/archive/2006/10/17/ROW5F00NUMBER28002900-OVER-
Not-Fast-Enough-With-Large-Result-
Set.aspx
当我单击StackOverflow的最后一页时,只需不到一秒钟的时间即可返回页面,这确实非常快。我想知道他们是否有一个真正的快速数据库服务器,或者只是他们有解决ROW_NUMBER()问题的解决方案?
任何的想法?
回答:
几年前,当使用不具有此功能的Sql Server 2000时,我们遇到了相同的问题。
我们发现了这种方法,乍一看性能似乎很差,但是却让我们不知所措。
试试看
DECLARE @Table TABLE( ID INT PRIMARY KEY
)
--insert some values, as many as required.
DECLARE @I INT
SET @I = 0
WHILE @I < 100000
BEGIN
INSERT INTO @Table SELECT @I
SET @I = @I + 1
END
DECLARE @Start INT,
@Count INT
SELECT @Start = 10001,
@Count = 50
SELECT *
FROM (
SELECT TOP (@Count)
*
FROM (
SELECT TOP (@Start + @Count)
*
FROM @Table
ORDER BY ID ASC
) TopAsc
ORDER BY ID DESC
) TopDesc
ORDER BY ID
以上是 ROW_NUMBER()OVER不够快,结果集很大,有什么好的解决方案吗? 的全部内容, 来源链接: utcz.com/qa/397652.html