配列に50個のオブジェクトがあり、各オブジェクトにプロパティがあるとしますcost
。また、すべてのオブジェクトはMySQLデータベースにあります。
すべてのオブジェクトをループしてそれらのメンバーを合計する方が効率的でしょうかcost
、それとも次のようなクエリを作成する方が効率的でしょうSELECT sum(cost) FROM ...
か?
編集:PDOデータベースオブジェクトはすでに確立されています。
配列のサイズ、データベース接続がすでに確立されているかどうかなどによって異なります。ループ部分は50項目しかないため、一般的にループ部分を使用します。ただし、最終的な答えは、自分で実行できるベンチマークです。
SUMクエリ。手を下げて。アプリコード内の配列をループするよりも効率的でない場合は、データベースを調整する必要があります。:)
一般に、MySQLにそれを行わせる方がはるかに効率的です。ただし、実際に50個のオブジェクトである場合は、データベースへのネットワーク接続などの他の要因が関係する可能性があります。ただし、アプリケーションがスケーリングしないことを前提としたコードを作成することは決して良い考えではありません。したがって、MySQLを使用してください:-)
合計クエリ。自分でやろうとするよりもずっと効率的です。
いずれにせよ、それらは問題にならないほど十分に類似しているでしょう。つまり、合計が高速である場合とほぼ同じである場合があるため、合計を使用することを意味します。コードを自分で実行してリスクを冒す理由はありません。
phpで74601レコードのテーブルを試してみたところ、sqlSUMクエリはphpでループするよりも約10倍高速であることがわかりました。