2

パフォーマンスが非常に重要な 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
4

1 に答える 1