哪种收集相关数据的效率最高?
假设我们有多个项目与一个类别1相关联:M。
每个项目都包含它所属的类别的ID值。我有一个所有项目的数组对象,我现在想要向该数组对象添加其类别名称而不是其ID。
例如,而不是:
project_id:1 project_title:第一个项目 project_desc:bla bla project_category_id:1
我希望它是:
project_id:1 project_title:第一个项目 project_desc:bla bla project_category:第一类
我没有遇到这个问题,我很好奇实现它的最有效方法是什么。
选项1
$projects = $this->projects_model->find_all();
$categories = $this->category_model->find_all();
foreach($projects as $project){
foreach($categories as $category){
if($project->category_id == $category->id){
$project->category = $category;
}
}
}
选项2
$projects = $this->projects_model->find_all();
foreach($projects as $project){
$project->category = $this->category_model->find_by('id', $project->category_id);
}
可能还有许多其他方法可以实现我想要的结果,并且可能会有更高效的庄园,如果是我喜欢学习的话。
答案 0 :(得分:1)
你应该自己剖析一下,你会得到答案
点击数据库很昂贵。访问数组数据不是。这意味着您将希望尽可能少地访问数据库。
答案 1 :(得分:0)
假设您的find_all和find_by函数从数据库请求数据,则选项1将更可取,直到所寻求的类别与使用的类别之间的比率变低。 SQL上的顺序(即读取然后读取下一行)读取操作比目标读取操作快得多。
但最终,如果我是你,我会更少关注实际的数组循环以及更多关于如何获取数据的信息,因为这个是性能消耗的来源。