1

このシナリオがあります。SQL Server データベース内のテーブルの 1 つに、既に 5,000 万行あります。時々バッチで行を挿入します。すべてのバッチは行に対して同じバッチ ID と日時スタンプを持ち、バッチは一度に最大 100,000 行を持つことができます。

1 日に多くのバッチが実行されます。batchIDと を使用して最初のバッチ行を取得するためのクエリの最適な方法は何datetimestampですか?

バッチ ID の min を使用し、対応する datetimestamp をしばらく使用していますが、効率的に実行されていないようです。これを改善するために何ができるかについての洞察を教えてください。回答ありがとうございます。

4

1 に答える 1

0

EDateを含む -Columnのインデックスを追加する必要がありますBatchID

create nonclustered index Index_EDate_Table 
 on YourTable 
   (EDate ASC)
 include 
   (BatchID)

次に、タイムスタンプで並べ替えられたその日のバッチを次のようにクエリできます。

select distinct BatchID
    from YourTable
   where EDate >= Cast(GetDate() as Date)
   order by EDate

これは十分に速いはずです。

于 2013-03-10T09:13:24.140 に答える