このスレッドを書いているのは、丸 3 日間この問題と戦ったからです!
基本的に、大きな CSV ファイルを収集し、それをローカル SQLCE データベースへの入力として使用するプログラムがあります。この CSV ファイル (ある種のオブジェクトを表し、「犬」と呼びましょう) のすべての行について、この犬がデータベースに既に存在するかどうかを知る必要があります。既に存在する場合は、データベースに追加しないでください。存在しない場合は、データベースに新しい行を追加します。
問題は、すべてのクエリに約 60 ミリ秒かかり (最初はデータベースが空の場合)、データベースが約 1000 行になると最大で約 80 ミリ秒かかることです。1000 行を処理する必要がある場合 (私の意見ではそれほど多くはありません)、これには約 70000 ミリ秒 = 1 分 10 秒かかります (データベースが最新かどうかを確認するためだけに)、遅すぎます! この量がいつか 10000 行を超える可能性があることを考えると、DB が同期されるまでユーザーが 10 分以上待機することは期待できません。代わりにコンパイル済みクエリを使用しようとしましたが、パフォーマンスは向上しません。
検索するフィールドは文字列 (主キー) であり、インデックスが付けられています。
必要に応じて、このスレッドをコードで更新して、私が何をしているかを確認できるようにします。