MySQL では、複数のクエリを実行すると時間がかかることがあります。パフォーマンスを最適化するには、クエリを 1 つに結合することが望ましいです。これが Quan によって提示されたクエリの核心です。更新された行を返すために 2 つのクエリをマージできますか?
最初のクエリは特定の基準に基づいてテーブルから行を選択し、2 番目のクエリは同じ基準を満たす行を更新します。これらのクエリを結合するには、1 回の操作で読み取りと書き込みの両方を可能にする手法が必要です。
1 つのアプローチは、サブクエリを使用することです。しかし、Quan はこの方法には限界がありました。 https://gist.github.com/PieterScheffers/189cad9510d304118c33135965e9cddb:
SET @uids := null; UPDATE footable SET foo = 'bar' WHERE fooid > 5 AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) ); SELECT @uids;
このクエリは次の手順を利用します:
このソリューションは、行の更新と取得の両方を効率的に組み合わせて、単一のクエリで必要な機能を提供します。
以上が単一の MySQL クエリで行の更新と取得を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。