我在显示3000行以上时遇到了问题(此数字将以指数速率增加)。
我当前正在从MYSQL数据库返回集合中的数据。我应该使用Laravel Eloquent还是Query Builder在我的控制器中获得更好的性能?
我应该以JSON文件格式返回数据,这有助于加快处理速度吗?
有没有一种方法可以添加,删除,编辑数据表中的行,而无需每次都真正返回视图?
如果您可以提供一些可能对您有所帮助的文章的解释,那就太好了。我试图找到一种使我走上处理大量数据的最佳途径的方法,但是没有运气。
关于, 詹姆斯
答案 0 :(得分:2)
对于处理海量数据,总是首选chunk或paginate,您可能要检查this answer。
我应该使用Laravel Eloquent还是Query Builder在我的控制器中获得更好的性能
口才更容易进行简单的查询和读取模型,因为它使用Active Record模式,而生成器则更快地处理查询和复杂性,您可能需要检查this answer
我应该以JSON文件格式返回数据,这是否有助于加快速度?
json或collection都由Laravel处理,恕我直言并没有多大区别,但是,如果您正在考虑将某些数据库记录保存在缓冲区json文件中:
让我们考虑一下这些情况(尽管数据库总是很大)
有没有一种方法可以添加,删除,编辑数据表中的行,而不必每次都真正返回视图?
关于第三个问题,添加,删除或更新可以通过一种或多种方式来完成,是的,您可以创建控制器功能并通过ajax进行通信。
该过程是:创建一个控制器函数以查询数据库,为此函数创建一个路由,并通过ajax在前端查询该函数,您可能需要检查this tutorial。
答案 1 :(得分:1)
当您将所有这些数据提取到后端时,我建议不要混合Eloquent模型。雄辩的模型非常沉重。相反,您可以使用轻量级的stdClasses:
$users = DB::table('users')->get();
get方法返回一个包含结果的Illuminate \ Support \ Collection,其中每个结果都是PHP stdClass对象的实例。
https://laravel.com/docs/5.7/queries#retrieving-results
除此之外,您应该真正考虑对结果进行分页。获取,转换和渲染大量项目通常会导致糟糕的用户体验。
https://laravel.com/docs/5.7/pagination
当然,您可以(并且应该)告诉数据库进行尽可能多的繁重工作。数据库旨在处理大量数据。
具有相同数据的大量更新: https://laravel.com/docs/5.7/queries#updates
大量插入: https://laravel.com/docs/5.7/queries#inserts
更灵活的批处理更新/插入程序包: https://packalyst.com/packages/package/mavinoo/laravel-batch
另外,请看以下示例: updating table rows in postgres using subquery
这是使用子查询中的数据更新表的方式。这是一个Postgres示例,可能不适合您的情况。只是想让您对DB具备的功能有所了解。如果您对原始查询感到满意,则数据库引擎可以为您提供性能最高,最灵活的工具。