ASP.NETを使用して、電子メールアドレスのリストをインポートする機能が必要な管理ツールを構築しています。ファイルをアップロードする際に、提供された電子メールアドレスの既存のレコードを確認したいと思います。存在しない電子メールアドレスについては、私のDAOを使用して作成します。重複をチェックするインポートプロセスの構築
基本的に私がしたい:
- は、電子メール
- リスト内のすべての電子メールをデシベル に
- 戻り、完全なデータを新しい電子メールのデータを作成し、既存の電子メール
- のためのデータを取得するのリストを受け取ります。
私はアップフロント存在する電子メールのかを知りたいので、私の最初に考えたのは、すべてのレコードWHERE Email IN ('Email001FromFile', 'Email002FromFile', 'etc...')
用のテーブルを照会することでしたが、リストには、潜在的に電子メールアドレスの数千人が含まれている可能性があり、私はそれを供給かどうか分かりませんIN演算子に多くの電子メールアドレスが良い考えです。
リストをループして各電子メールのレコードをチェックすることも考えましたが、それは潜在的には多すぎるクエリを生成する可能性があります。
私の次の考えは、リストを保持するための一時テーブルを生成し、明示的な項目リストではなく一時テーブルを使用するようにIN節を変更することでしたが、SQLまたはストアドプロシージャを直接実行する必要があります。私は私のDBにアクセスするためにNHibernateを使用しているので、私はやりたくない。
私はASP.NET(C#)とNHibernateを使用していますが、それに特有の回答が役に立ちますが、このシナリオの処理方法に関する一般的なアイデアを探しています。
ちょうどあなたがNHibernateを使用しているからといって、あなたがストアドプロシージャを使用してしまってはいけません。 SPが最善のアプローチである場合があります。特に、既存のすべてのレコードをメモリに保存する必要がないことが問題の場合は特にそうです。現時点であなたの手に持っているツールだけではなく、その仕事に適したツールを使用してください。 –
これは、使用できるあらゆる種類のツールで1つのトランザクションで時間がかかりすぎませんか?とにかく大量のレコードをインポートするためにはバッチ処理が必要だと思います。 – Paco