0

私はテーブルを持っていますtblRecords。このテーブルには毎日 3500 レコードが挿入されます。 tblRecordsにリンクする外部キーがありますtblUploadID各行は、一般的な列とは別に、 REF(例: XYDG74G) と、それを にリンクする外部キー列 (例: 345)によって識別されtblUploadます。

毎日アップロードされる約 3500 行は、前日からアップロードされたものと同じ行 (更新あり) と、過去 24 時間からの追加の新しいエントリです。

各行には、およびtblRecordとしてフラグを立てることができます (BIT 列) 。つまり、「今日アップロードされたすべての (3500+) レコードを表示」します。実際の列とともに、2 つの列を表示したいのですが、MissCustNameMissCustNameFixedtblRecordtblUploadtblRecordCountOfPrevMissCustNameCountOfPrevMissCustNameFixed

ID - Ref - CustName - CountofPrevMissCustName- CountofPrevMissCustNameOK

1 - AASD001 - <NULL> - 14 - 12

2 - ZRFG789 - Joe Bloggs - 10 - 8

3 - YERF777 - Mary Blyge - 0 - 0

Missing Customer Name は、Missing Customer Name に TRUE のフラグが立てられているトランザクションの合計レコード (履歴) をカウントします。`MissNameFixed も同じことを行います。

  1. レコード 1 には、以前に 14 個の欠落した顧客名フラグと 12 個の MissNameCustNameOK フラグがありましたが、まだ顧客名が欠落しています。

  2. レコード 2 には、以前に 10 個の欠落顧客名フラグと 8 個の MissNameCustNameOK フラグがあり、現在顧客名があります。

  3. レコード 3 には顧客名フラグが欠落していないため、MissNameCustNameOK フラグはなく、現在名前があります。

これらの 'dcount' スタイルの列を実装するのに最も効率的な (SQL Server へのストレスが最も少なく、最も速い) ものは何でしょうか。Access 内で dcount 列を試すと、Access で DAO レコードセットを使用する場合と同様に、非常に遅くなります (9以下を参照)。

SELECT *, dcount("RecordID","tblRecordsHistorical","Ref=" & Ref & " AND CustName is null) as CountofPrevMissCustName, dcount("RecordID","tblRecordsHistorical","Ref=" & Ref & " AND CustName is not null) as CountofPrevMissCustNameOK from tblRecords

理想的には、ロードできるある種のビューを作成し、それを使用してテーブルを一括更新できるようにしたいと考えています。

私は tblRecords の最新のバッチでのみ作業するので、CountOf... 物理列が一度更新されると、再度更新する必要はありません。

thnx

4

0 に答える 0