私は約500K +のレコードを持つDataTableを持っており、DataTableに含まれるレコードごとにデータベースのフィールドを更新したいと考えています。現時点で多くの行を更新する
、私のようなので、データテーブルのID列内のすべてのレコードのリストを取得し、それらのIDにSQL in
文でUPDATE文を作成しています:
string sql = "UPDATE my_table SET my_field = @timestamp WHERE id IN (" + String.Join(", ", myDataTable.AsEnumerable().Select(r => r.Field<Int64>("id")).ToList().ToArray()) + ")";
これは動作しますただし、IDの量が多いため、MySQLのパケットサイズがこのクエリでは十分ではないというエラーが表示されています。
パケットサイズを増やすこと以外に何ができますか?これは悪いアプローチのようです。
)最高のあなたに合うかわかりませんか..?クエリを使用して同じ結果を得ることは可能ですか? – scaisEdge
私はこの方法でクエリを構築しないことから始めます。このC#をタグ付けしたので、ADO.NETにアクセスできると仮定します。つまり、クエリをパラメータ化できます。 –
私は2番目のTieson T.コメント。そのテーブルのすべてのレコードを更新しますか?別のテーブルで更新するIDのリストはありますか?その場合は、結合を使用して更新するレコードを選択します。 –