【发布时间】:2014-12-09 16:27:07
【问题描述】:
我有以下表格:
- 用户(大约 1.000 行)
- 粉丝(大约 100.000 行)- 一个用户有很多粉丝,一个粉丝属于一个用户
- 赞(大约 100.000 行 - 一个用户有很多赞,一个赞属于一个用户
现在我想要一张桌子
- 用户名
- 粉丝数
- 点赞数
这是一个大表,我使用 jQuery DataTable 将它与分页一起使用,但这里是关于服务器端的。
我已经建立了我所有的关系并输出了表格:
$users = User::get();
foreach ($users as $user) {
echo $user->name;
echo $user->fans()->count();
echo $user->likes()->count();
}
这是很多查询,我想优化。我的第一次尝试是使用 Eager Loading。
$users = User::with('fans', 'likes')->get();
但这似乎对服务器内存非常不利。在我的本地环境中,我有 16 MB 的内存大小用于 php 脚本。而且它总是试图分配更多。
这正常吗? 简单地为脚本提供更多内存的最佳解决方案是什么? 我还能如何优化我的查询?
【问题讨论】:
-
16mb 用于 php 脚本?这根本不是很多。
-
是的,the default 是 128 MB。
-
您是对查询进行分页(使用限制和偏移)还是只是将其全部拉出然后在内存中排序?
标签: php mysql laravel laravel-4 eloquent