私はmysqlで大規模な結合を行っており、結果のデータに基づいて行動し、それを別のテーブルに書き込んでいます。現在、デフォルトの mysql_store_result を使用していますが、クエリの後の $sth->execute() の実行には約 20 分かかります。一度に 1 行しか操作していないため、mysql_use_result に切り替えたいと考えています。
しかし、ドキュメントのこの部分は私を悩ませます:
この属性は、ドライバーが mysql_store_result ではなく mysql_use_result を使用するように強制します。前者は高速でメモリ消費が少ないですが、他のプロセスをブロックする傾向があります。(これが mysql_store_result がデフォルトである理由です。)
一度に 1 行ずつ処理し、結果を配列に格納しています。500 エントリごとに、別のテーブルに INSERT を実行します。これは、mysql_use_result ループ内から実行しても問題ありませんか? INSERT 用に新しい DB ハンドラを定義してもよろしいですか?