我是laravel的新手,我不确定我做错了什么,因为我的查询需要很长时间才能运行。
我有大约35000条记录,请参阅下面的一个查询示例,大约需要23秒才能加载页面(请参阅下面的屏幕截图链接)。
任何人都可以建议我的错误或更好的方式来查询我的数据库。我尝试过Eloquent,它比DB :: Query慢几毫秒。
$data3 = DB::table('toutcome')
->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth())
->join('tapplicant', 'tapplicant.AppID', '=', 'toutcome.AppID')
->select(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y") as CompletedDate,
SUM(AffID = "MW0050") as leadccount50,
SUM(AffID = "MW0051") as leadccount51, tapplicant.AppReference'))
->groupBy(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y")'))
->get();
答案 0 :(得分:0)
您是否直接在数据库中测试了原始查询?如果查询也很慢,你可以尝试在它上面使用EXPLAIN来帮助找到添加索引的位置和重写位置。我不知道你的表看起来如何,我的第一个猜测是减速与分组相关
答案 1 :(得分:0)
首先听起来很长。
查询看起来非常详细,但不应超过1分钟。
您可以尝试使用eloquent,但这只会比原始查询快一点。
你没有提到的事情是:
这是本地服务器还是远程服务器?如果您使用的是远程服务器,我的解决方案是使用" skip-name-resolve"在mysqld下的my.ini / my.cnf中,更新你的key_buffer_size。
如果这不能提高速度,可以查看该特定服务器的资源。