2017-02-08 3 views
1

MySQL 5.7およびPHP 5.6を実行しているIISを備えたWindows Server 2012があります。私はいくつかの複雑なJSONを複数のデータセットとループを使って構築しなければなりません。PHPとMySQLの両方を実行するサーバーでは、1つのPHPループで複数のSQL呼び出しを行う方が効率的ですか?

1つのSQLコールを実行してから、データ配列に多数のPHPループを使用してJSONを構築する方が効率的でしょうか?

SQL:

SELECT stuff, item_id 
FROM here 
WHERE item = 1 
OR item = 2 
OR item = 3 
OR item = 4 

はPHP:

foreach($sql_results as $item) 
{ 
    // build JSON by looking at $item['item_id'] 
} 

か、私は(いくつかの種類のループで)個別にSQL呼び出しを行うと通話としてJSONを構築することが良いだろう作られている?

SQL:

SELECT stuff, item_id 
FROM here 
WHERE item = 1 

SELECT stuff, item_id 
FROM here 
WHERE item = 2 

SELECT stuff, item_id 
FROM here 
WHERE item = 3 

SELECT stuff, item_id 
FROM here 
WHERE item = 4 

はPHP:呼び出しの非常に大量の

$item 
// build JSON directly from each call 

、PHPやMySQLのいずれかが行き詰まる可能性が...ので、どちらが私は私のように行くだろうここの仕事場?

+2

OR条件を複数回使用してのitem IN(...)を使用することができます。もし私がそれを助けることができれば、私は決してループの中にクエリーを入れません。 –

+1

あなたは受け入れられたとして回答をマークしましたが、その答えの背後には推論がありません。あなたの側からの情報はほとんどありません。あなたはボトルネックが何であるかを判断することさえできませんでしたが、未知の要因を最適化しようとしています。それは実用的ではないのですか?ボトルネックが何であるかを決めるまで、それを防ぐために戦うことはできません。それがそのままでは、あなたがCPUかI/Oに縛られているかどうかは分かりません。あなたが決定するまで、あなたの最適化はあなたの貴重な時間を完全かつ完全に無駄にするでしょう。 –

答えて

2

dbリクエストは明らかに時間がかかります。そのため、1つのSQLクエリとPHPループで最初のアプローチを選択します。

2

間違いなく、1つのクエリがより良い解決策になります。

また、サイドノートとして、あなたはそれが可能としてデータベースになど、いくつかのクエリを持っていることはほぼ常に良いアイデアだ親指の一般的なルールとして代わりに

関連する問題