在运行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