Php 对同一数据集使用多个循环(非嵌套)/单个循环的性能事实
要将数据导出为pdf,我需要从数据库中查询数据集,然后在其中循环以管理索引,然后导出为pdf。查询时,可以使用连接和其他机制以不同的方式操作数据集。混淆之处在于,根据数据集的结构,它可以在单个循环中完成,也可以在多个循环中完成(不是嵌套的)。这两种方式的性能影响是什么 例如:数据集包含“组织”及其“查询”。“查询”有不同的类型。在这种情况下,我可以查询以检索整个数据集,并使用一个循环遍历它,或者检索数据集作为部分,然后使用多个循环遍历它 这两个场景的性能事实是什么。Php 对同一数据集使用多个循环(非嵌套)/单个循环的性能事实,php,mysql,performance,Php,Mysql,Performance,要将数据导出为pdf,我需要从数据库中查询数据集,然后在其中循环以管理索引,然后导出为pdf。查询时,可以使用连接和其他机制以不同的方式操作数据集。混淆之处在于,根据数据集的结构,它可以在单个循环中完成,也可以在多个循环中完成(不是嵌套的)。这两种方式的性能影响是什么 例如:数据集包含“组织”及其“查询”。“查询”有不同的类型。在这种情况下,我可以查询以检索整个数据集,并使用一个循环遍历它,或者检索数据集作为部分,然后使用多个循环遍历它 这两个场景的性能事实是什么。 提前感谢通过对每个数据集只查
提前感谢通过对每个数据集只查询一次,您可以绕过向数据库发送额外查询时可能出现的额外延迟(如mysql执行其任务所需的时间,如果数据库位于本地服务器上,则额外的网络延迟非常低) 每次查询数据库时,查询本身都必须
- 发送到数据库
- 由数据库解析
- 分析和优化
- 执行
$tableAR = array('Incident' => $incidentAR,
'Prevention' => $preventionAR,
'Undefined' => $undefinedAR);
foreach($tableAR['Incident'] as $incident){
sendIncidentmail($incident);
}
// same for prevention and any other array, write your code in a way some random programmer can understand what is happening
当然,您可以创建一个函数来查看元素,检查类型,然后决定发送哪种邮件,但是在调用函数的地方,它的可读性要差得多,而且函数本身必须更大才能决定它与给定数据的关系
$tableAR = array('Incident' => $incidentAR,
'Prevention' => $preventionAR,
'Undefined' => $undefinedAR);
$completeArray = array_merge($tableAR['Incident'], $tableAR['Prevention'], $tableAR['Undefined']);
foreach($completeArray as $element){
sendMail($incident);
}
这很有帮助。但我的场景不是查询不同的时间。数据集是一次性检索的。混淆之处在于通过检索的数据进行循环以进行管理。是对整个数据集使用单循环,还是对数据集中的部分使用多个循环。谢谢@Philipper您能给出一个更具体的示例吗?$tableAR=array('Incident'=>$incidentAR,'Prevention'=>$preventionAR,'Undefined'=>$undefinedAR);假设$incidentAR、$preventionAR和$undefinedAR是数据集中的数组。我查询的方式产生了这种类型的数据集。因此,我可以通过这些子数组中的每个子数组进行循环,每个子数组都有单独的循环。通过同样的方法,我可以查询数据集作为一个整体,然后使用一个循环来遍历它。这两种方法之间存在混淆。什么更准确,或者两者相同?非常感谢您的支持@PhilippOk,我编辑了答案,但这纯粹是基于意见。人们可以分析哪个更快,大循环还是一些小循环,但性能不会起到那么大的作用。