通常はupdate()
を使用するため、質問が頻繁に行われることはありません。 多数のレコードを同じ値に設定するか、1つのレコードを多くの異なる値に設定します。
これを回避する1つの方法は、更新を集約することです。したがって、配列を使用して、2011年のすべてのIDを取得し、これを実行します。
$where = array();
// This where should contain all the ids that need the year set to 2011
// E.g.
$where[] = array("id" => 3);
$db->update("table_name", array("year" => 2011), $where);
これを行うと、同じ年の行が多数あると仮定して、クエリの数を減らすことができます。このドキュメントは、こちら です。 。
または、メソッドこのように
OP応答後に編集
問題の本質は、効率的に解決できないことを意味します。
非常に異なるデータセットで3,700行のデータを更新する方法を求めています。データのセットが異なる場合、これを効率的にするために利用できるパターンはありません。同じ年の行などのパターンを見つけてそれを有利に使用すると、クエリの速度が向上しますが、配列マッシングの形で頭脳を活用する必要があります。 regileroが指摘したように。