我有一个连接到我的数据库的页面,但收集所有数据后页面加载大约需要1分钟。
我做错了什么,或者我能做些什么来加快这个过程?
控制器
class ReportSummaryController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function __construct()
{
$this->middleware('auth');
$user = Auth::user();
if (@$user->name)
$details = DB::table('taffiliate')
->where('affID', "=", $user->name)
->get();
else
return redirect('/login');
view()->share('details', $details);
}
public function index()
{
$user = Auth::user();
$affiliate = $user->name;
$affdata = DB::table('toutcome')->select(DB::raw('sum(LenderCommission) as LenderCommission'), 'AffID', 'AppID')
->whereRaw('CompletedDate >= curdate()')
->groupBy('AffID')
->orderBy('AppID', 'ASC')
->get();
$data3 = DB::table('toutcome')
->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->whereRaw('AffID Not Like "MW0050"')
->join('tapplicant', 'toutcome.AppID', '=', 'tapplicant.AppID')
->select(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y") as CompletedDate,
SUM(LenderCommission) as commission,
SUM(AffCommission) as affCommission,
COUNT(DISTINCT tapplicant.Email) as leadcount,
SUM(Status = "A" AND LenderCommission Not Like "0.00") as acceptcount'))
->groupBy(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y")'))
->get();
$users = Toutcome::where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->join('tapplicant', 'toutcome.AppID', '=', 'tapplicant.AppID')
->select(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y") as CompletedDate,
SUM(LenderCommission) as Commission,
SUM(AffCommission) as Affiliate_Commission,
COUNT(DISTINCT tapplicant.Email) as Applications,
SUM(Status = "A" AND LenderCommission Not Like "0.00") as Sold'))
->whereRaw('AffID Not Like "MW0050"')
->groupBy(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y")'))
->get();
$comtotal = DB::table('toutcome')
->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->whereRaw('LenderCommission Not Like "0.00"')
->sum('LenderCommission');
$subid = DB::table('tapplicant')
->whereRaw('AppAffID Not Like "050"')
->whereRaw('AppAffID Not Like "000"')
->where('AppDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->select('AppAffID')
->groupBy('AppAffID')
->get();
$lender = DB::table('toutcome')
->select('LenderName')
->groupBy('LenderName')
->get();
$imtotal = DB::table('toutcome')
->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->whereRaw('LenderCommission Not Like "0.00"')
->whereRaw('AffID Not Like "0050"')
->count('AppID');
$cototal = DB::table('toutcome')
->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->whereRaw('LenderCommission Not Like "0.00"')
->whereRaw('AffID Not Like "0050"')
->where('Status', '=', 'A')
->count('AppID');
$comtotal2 = DB::table('toutcome')
->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->whereRaw('LenderCommission Not Like "0.00"')
->sum('LenderCommission');
$comtotal3 = DB::table('toutcome')
->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->whereRaw('LenderCommission Not Like "0.00"')
->sum('AffCommission');
return view('summary', compact('affdata','data3', 'comtotal', 'subid' , 'users', 'lender', 'imtotal', 'cototal', 'comtotal2', 'comtotal3'));
}
答案 0 :(得分:1)
首先听起来很长。
查询看起来非常详细,但不应超过1分钟。
您可以尝试使用eloquent,但这只会比原始查询快一点。
你没有提到的事情是:
这是本地服务器还是远程服务器? 如果您使用的是远程服务器,我的解决方案是在mysqld下的my.ini / my.cnf中使用“skip-name-resolve”并更新您的key_buffer_size。
如果这不能提高速度,可以查看该特定服务器的资源。