外部ソースからAccess DB(.accdb)を取得し、構造やデータを制御できません。コードを使用してデータをDBに取り込む必要があります。つまり、私はSQLを制御できます。AccessでSQLを使用するレコードを制限する
私たちの問題は、1つのテーブルに13kレコード(現在は12,997件)が含まれており、処理に時間がかかることです。ソースDBのデータを照会したいのですが、一度に定義された数のレコードのみを照会したいのです - 一度に1000としましょう。
ループ内でクエリを生成して、各ループで返されるレコードの数を更新しました。
私は、各ループで のpageSizeと startPosをインクリメントSELECT *
FROM (
SELECT Top + pageSize + sub.*
FROM (
SELECT TOP + startPos + [Product Description Codes].*
FROM [Product Description Codes]
ORDER BY [Product Description Codes].PRODDESCRIPCODE
) sub
ORDER BY sub.PRODDESCRIPCODE DESC
) subOrdered
ORDER BY subOrdered.PRODDESCRIPCODE
:これまでのところ、作業に近づく私が見つけた唯一のものは、このようなものです。問題は、いつもが、最終的に997だけ戻ってから0を返すべきであると思うものであっても、1000行を返します。
誰もがこれを手伝ってくれますか?フィルタリングする別の列がありません。ループ内の特定のレコード数を選択し、すべてのレコードを取得して停止するまでその数を増やす方法はありますか?
処理に時間がかかるということを明確にすることはできますか? 13kのレコードは何もなく、遅くなるべきではありません –
今、私はすべての13kレコードを取得します。それぞれについて、私のコードはDBの既存のレコードをチェックします。既存のレコードがある場合は更新されます。既存のレコードがない場合は、現在のレコードが挿入されます。私はこれを昨日走らせ、完了までに3,437,640ミリ秒かかりました。これは約57分です。これはパフォーマンス指標の範囲外です。 – Steve
あなたのコメントを見ました。うわー、それは遅いです。たぶんあなたはプロセス全体を間違っているでしょう。あなたが1つずつ操作をしているように聞こえますが、2つしかないのですか? (更新用、挿入用) –