php - 无法从大型表行中检索记录

标签 php mysql laravel laravel-5

我正在使用 Laravel 框架。在我的数据库记录表中有超过 400000 行。现在我想使用某些条件检索记录 逻辑: 需要匹配服务id 需要匹配状态

但我的应用程序无法检索数据(无法处理此请求)。 我正在使用这个查询

foreach ($ven as $ven){
    $data = $ven->data;
    $record = $data ->records()->where('status','success')->get();
}

我的状态列已添加到索引中。

需要建议

最佳答案

首先,您需要将状态保存为 int 形式而不是字符串。它将帮助您轻松过滤记录。

并使用chunk来处理大型数据集。我想 $ven 是用于 field 的。因此,请按照下面的代码操作。

DB::table('venues')
->select('venues.*', 'records.*')
            ->join('records', 'venues.id', '=', 'records.venue_id')
             ->orderBy('id')->chunk(1000, function($venues) {
    foreach ($venues as $venue) {
        // your logic
    }
});

注意:我使用查询生成器而不是 eloquent。这是因为查询生成器比 Eloquent 更快。

关于php - 无法从大型表行中检索记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51158302/

相关文章:

php - 可以通过 CSS 将列表从垂直更改为水平吗?

php - 在 php echo 中运行 php echo?

php - 如何在 Laravel 5 中使用输入名称创建存储文件夹和子文件夹

php - 带有 Auth 的 Laravel 处理程序错误上下文中的错误

php - 在 Laravel 中获取 "Integrity constraint violation: 1452"

javascript - 如何使用iframe从我的网站查看pdf?

php - 是否有更短的方法来指定要运行哪个类?

mysql - 将数据自动记录到数据库时从哪里开始

mysql - 选择带有条件的别名以计入mysql中的百分比

mysql - 连接和限制时间的mysql查询中的问题