Laravel 5: 重度 Select 查询

Laravel 5: Heavy Select Query

我的数据库中有大约 25.000 行 table 'movies'(InnoDB,17.5 mb) 当我尝试让它们全部显示在我的管理面板中时,什么也没有发生。只有 5-8 秒等待和白屏。没有显示错误,什么都没有。 (最大执行时间为 3600 秒,因为它在我的本地机器上)。我的简单代码:

public function index()
{
    $data['movies'] = Movies::all();

    dd('This var_dump & die never fires');

    // return view('admin.movies', $data);
}

我只是想知道为什么它不执行查询并在没有声明 war 的情况下死掉。

我没有在 .ENV 或 config/database.php 中找到任何有趣的东西来解释在这种情况下会发生什么。

PS。是的,我可以进行服务器端分页和搜索,并且只从数据库中获取 10-25 条记录,问题不在于此。

您绝对应该查看您的 storage\logs 目录以验证错误。获取 25k 行很可能需要大量内存。

事实上,正如您在现实生活中提到的那样,没有必要获取这么多行,因为除非您将它们导出为 CSV 或 XLS。

看起来你 运行 内存不足。尝试查询结果的一半,或者可能只是 100,看看是否至少修复了白页,如果是这样,请使用 chunk:

Movies::chunk(200, function($movies)
{
    foreach($movies $movie)
    {
        var_dump($movie);
    }
});