我有性能非常重要的 ASP.NET 网站。该网站有效,但性能低下。我必须提高这个项目的性能。
首先,我在该项目的报告中看到网格中的分页。我不得不说这个项目的数据库是SQL Server 2000,我使用临时表进行分页,但我认为这个存储过程。我获取了所有记录,然后我选择了 10 行这个结果,我认为它效率不高。因为它获取了 50000 行但选择了其中的 10 行。
我想每次只获得 10 行的时间。我们想将 SQL Server 版本更改为 2008,我想在 2008 版本中使用分页方法。我搜索了很多。我找到了这个存储过程,但我认为它与我的第一个查询相同;获取所有行然后使用行号。
我想知道在大型数据库中的 SQL Server 2008 中分页的最佳存储过程是什么?欢迎任何提示或技巧。提前致谢。
这是我的第一个分页方法:
USE AdventureWorks
GO
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = 120
SET @EndRow = 140
CREATE TABLE #tables (RowNumber INT IDENTITY(1,1),
FirstName VARCHAR(100), LastName VARCHAR(100),
EmailAddress VARCHAR(100))
INSERT INTO #tables (FirstName, LastName, EmailAddress)
SELECT PC.FirstName, PC.LastName, PC.EmailAddress
FROM Person.Contact PC
ORDER BY FirstName, LastName, EmailAddress
SELECT FirstName, LastName, EmailAddress
FROM #tables
WHERE RowNumber > @StartRow
AND RowNumber < @EndRow
DROP TABLE #tables
SQL Server 2008 中的第二个:
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY fdate) AS row, *
FROM somthing
) AS a WHERE row BETWEEN 1 AND 10