パフォーマンスが非常に重要な ASP.NET Web サイトがあります。この Web サイトは機能しますが、パフォーマンスが低下します。私はこのプロジェクトのパフォーマンスを上げなければなりません。
まず、このプロジェクトのレポートのグリッドにページングが表示されます。このプロジェクトのデータベースは 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