1

ASP.NET を使用して Web アプリを作成しています。基本的に、10 億行のデータベースを持つ SQL Server からデータを表示する必要があります。何かをクエリすると、多くの場合、多くの時間がかかります。たとえば、次のコードを使用して、先週から作成されたデータを照会しました。

DECLARE @CurrentDate as DateTime,
        @PastWeek as DateTime;

SET @CurrentDate = GETDATE();
SET @PastWeek = DATEADD(ww, -1, @CurrentDate);      

SELECT [ID]
      ,[TIMESTAMP]
      ,[USERNAME]
      ,[CLIENTNAME]
      ,[COMMAND]
      ,[PATH]
  FROM [P4D] WHERE TIMESTAMP BETWEEN @CurrentDate AND @PastWeek;

20分経ってもまだクエリを実行しています。時間範囲内かどうかにかかわらず、すべての行をテストするため、時間がかかると思います。

過去の週から作成されたデータを取得するのは間違った方法ですか? または、クエリステートメントをより効率的にする方法はありますか?

ありがとう!

4

1 に答える 1

2

2 必要なもの:

SELECT ID 
      ,TIMESTAMP
      ,USERNAME 
      ,CLIENTNAME 
      ,COMMAND
      ,PATH
  FROM P4D (NOLOCK) WHERE TIMESTAMP BETWEEN @CurrentDate AND @PastWeek; 

(クエリに nolock を追加します)

非クラスター化インデックスをTIMESTAMP追加し、選択した列(ID,USERNAME,CLIENTNAME,COMMAND,PATH)をこのインデックスに追加します。

于 2012-10-03T13:53:52.320 に答える