在运行PHP和MySQL的服务器上,使用一个PHP循环进行多个SQL调用是否更有效,反之亦然?

问题描述:

I have a Windows Server 2012 with IIS running MySQL 5.7 and PHP 5.6. I have to build some complex JSON using multiple data sets and loops.

Would it be more efficient for me to do one SQL call and then build my JSON using a number of PHP loops on an array of data?

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']
}

Or would it be better for me to do each SQL call individually (in a loop of some kind) and build the JSON as the calls are being made?

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

With a very large amount of calls, either PHP or MySQL could get bogged down... so which one would I go with as my workhorse here?

我有一台运行MySQL 5.7和PHP 5.6的Windows Server 2012。 我必须使用多个数据集和循环构建一些复杂的JSON。 p>

我是否更有效率地进行一次SQL调用然后使用一些PHP循环构建我的JSON 数据数组? p>

SQL: p>

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

PHP: p>

  foreach($ sql_results as $ item)\  n {
 //通过查看$ item ['item_id']来构建JSON 
} 
  code>  pre> 
 
 

或者我可以更好地进行每次SQL调用 单独(在某种循环中)并在调用时构建JSON? p>

SQL: p>

  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 \  nWHERE item = 4 
  code>  pre> 
 
 

PHP: p>

  $ item 
 //直接从每次调用构建JSON \  n  code>  pre> 
 
 

通过大量通话, 无论是PHP还是MySQL都可能陷入困境......那么我可以选择哪一个作为我的主力? p> div>

The db request is definitely more time consuming, so I would choose the first approach with one SQL query and PHP loop.

Definitely, one query will be better solution.

Also, as a side note, you can use item IN(...) instead of using OR condition multiple times