我使用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