1

PHPでバッチ更新を実行するために、Javaのjdbcドライバーと同様の方法を探しています。

jdbc にはPreparedStatement.executeBatch()、DB への 1 回のラウンドトリップでステートメント全体を実行する の API があります。

PHP PDO には同様の API がありますか? そうでない場合は、トランザクションを開始し、更新を行ってからコミットすると、DB への 1 回のラウンドトリップですべての更新を実行するという同じ効果が得られますか、または各更新が DB にラウンドトリップし、すぐにステートメント(取引中のため、他の人には見えませんが)?

4

2 に答える 2

0

PHP PDO にはクエリのバッチ実行がありません。

通常、トランザクションで多くの挿入と更新を実行すると、実行速度が大幅に向上します。データベースでバッチ ジョブを作成している場合は、トランザクション内で一括してクエリを実行する必要があります。

于 2013-03-29T08:54:54.923 に答える
0

Mysql には「一括更新」のようなものはありません。SQL クエリのみがあります。1 つのクエリで更新を実行できる限り、更新は 1 回の往復で実行されます。そうでなければたくさんいるでしょう。使用されている API に関係なく。

単一の SQL クエリについて言えば、2 つの方法が考えられます。

  1. WHERE の CASE ステートメント
  2. ON DUPLICATE UPDATE ステートメントを使用した INSERT(!) クエリの巧妙なトリック。これにより、実際にデータが更新されます。
于 2013-03-29T09:03:53.760 に答える