多くのレコードに対し、繰り返し処理を行なうときのパフォーマンスアップ。
Task テーブルから、複数のタスクを取得し、処理を行ないながらタスクをデリートしていく例。
何も考えずにやると、このようなコードに。
数が多くなってくると、処理時間の長さが気になってくる。
とくに SQLite を使っているときは、delete のパフォーマンスがネックになりやすい。
そんなときは、このように同じコネクションを使い回す。
もちろん、delete ではなく、save でも同様のことができる。
レコードを巡回しながら、特定の値を一括して変更したいときなどには、save でこの方法を使うとよい。
Task テーブルから、複数のタスクを取得し、処理を行ないながらタスクをデリートしていく例。
何も考えずにやると、このようなコードに。
foreach ($tasks as $t)
{
:
(タスク処理)
:
$t->delete();
}
数が多くなってくると、処理時間の長さが気になってくる。
とくに SQLite を使っているときは、delete のパフォーマンスがネックになりやすい。
そんなときは、このように同じコネクションを使い回す。
$con = Propel::getConnection(TaskPeer::DATABASE_NAME);
$con->begin();
foreach ($tasks as $t)
{
:
(タスク処理)
:
$t->delete($con);
}
$con->commit();
もちろん、delete ではなく、save でも同様のことができる。
レコードを巡回しながら、特定の値を一括して変更したいときなどには、save でこの方法を使うとよい。
コメントする