我正在编程的网站有问题。在我有页面和子页面的网站部分上,事情有点慢。在本节中,我有很多 mySQL 查询,有 20 多个查询同时执行,这让我最多等待 5 秒,直到出现任何结果。
我读了这个问题每页加载 20 个 SQL 查询真的考虑了很多吗?并发现我确实有问题......并且madlep的回答提到了这种N + 1情况,我在foreach中查询每个页面的数据库,寻找它的孩子。
这是一个例子(顺便说一下,我正在使用 Laravel):
$pages = Page::where('slug', '=', $slug)->get(array('id', 'title', 'slug'));
foreach ($pages as $page) {
$children = Page::where('parent_id', '=', $page->id)->get(array('id', 'title', 'slug'));
foreach ($children as $child) {
$grandChildren = Page::where('parent_id', '=', $child->id)->get(array('id', 'title', 'slug'));
}
}
作为一个新手,我试图找到一种更好的方法来处理这个问题,减少页面查询。
问题是:如何在 foreach 循环之外获取子页面?一切都是动态完成的,所以我需要一种灵活的方法来处理这个问题。