laravel withcount order 重い
Q&A
laravelを利用。
User の関連モデル Iine の withcount 順に並べたいが重い
もっと早くしたい。
iine は 50万件ほどデータを持っている
HogeController.php
$sql = User::query()
->withCount('iine30s')
->orderBy('iine30s_count', 'DESC')
->limit(25);
User.php
// いいね数
public function iine30s()
{
return $this
->hasMany('App\Models\Iine', 'foreign_key');
}
発行されるクエリ
"select `users`.*, (select count(*) from `iines` where `users`.`id` = `iines`.`foreign_key`) as `iine30s_count` from `users` order by `iine30s_count` desc"
もっと早くする方法はないでしょうか?
やっぱり cron で 先に計算し、DBに値を入れておくべきなんでしょうか。
0