私はテーブルを持っていますtblRecords
。このテーブルには毎日 3500 レコードが挿入されます。 tblRecords
にリンクする外部キーがありますtblUpload
。ID
各行は、一般的な列とは別に、 REF
(例: XYDG74G) と、それを にリンクする外部キー列 (例: 345)によって識別されtblUpload
ます。
毎日アップロードされる約 3500 行は、前日からアップロードされたものと同じ行 (更新あり) と、過去 24 時間からの追加の新しいエントリです。
各行には、およびtblRecord
としてフラグを立てることができます (BIT 列) 。つまり、「今日アップロードされたすべての (3500+) レコードを表示」します。実際の列とともに、2 つの列を表示したいのですが、MissCustName
MissCustNameFixed
tblRecord
tblUpload
tblRecord
CountOfPrevMissCustName
CountOfPrevMissCustNameFixed
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 には、以前に 14 個の欠落した顧客名フラグと 12 個の MissNameCustNameOK フラグがありましたが、まだ顧客名が欠落しています。
レコード 2 には、以前に 10 個の欠落顧客名フラグと 8 個の MissNameCustNameOK フラグがあり、現在顧客名があります。
レコード 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