私はidではなく文字列であるカスタムフィールドに関連する5つのテーブルを持っています。Laravel 5.2 sum()を使った左結合の最適化
私は照会したいものに関連する各テーブルの量の合計を取得したいと思います。
私はそれを左結合を使って動作させることができますが、結果を出すには少なくとも10秒かかります。
私のクエリに最適化します。
$raohs = Raoh::leftjoin('func','raoh.FFUNCCOD','=','func.FFUNCCOD')
->leftjoin('appd','raoh.FRAOCOD','=','appd.FRAOCOD')
->leftjoin('altd','raoh.FRAOCOD','=','altd.FRAOCOD')
->leftjoin('obrd','raoh.FRAOCOD','=','obrd.FRAOCOD')
->where(function($query) {
$search = \Request::get('search');
$query->where('fraodesc', 'like', '%' . $search . '%')
->orWhere('fsourcod', 'like', '%' . $search . '%');
})
->where('func.FFUNCCOD', 'like', '%' . trim($ffunccod) . '%')
->select(\DB::raw('fraodesc,fsourcod,raoh.ffunccod,raoh.FRAOCOD,func.ffunction,sum(appd.FAMOUNT) AS fapprop, sum(altd.FAMOUNT) AS fallot, sum(obrd.FAMOUNT) AS foblig'))
->orderBy('ffunction')
->groupBy('raoh.FRAOCOD')
->paginate(20);