加载超过 10k 条记录时性能缓慢
页面加载时间:8.00 秒
问: 有没有人遇到类似的问题,当数据超过10k时,返回数据会很慢?有什么优化的想法吗?当用户访问页面时,即使我已经在表中建立了索引,也需要花费近 8 秒的时间来加载所有数据。
系统详情
PHP 7.3、Laravel 8.4、Laravel-Yajra-Datatables v9.18。
代码
控制器
public function getPlayerlistAction(Request $request)
{
if ($request->ajax()) {
$player = Player::where('parent_id', Auth::user()->id)
->with(['getGames' => function ($q){
$q->select('id', 'title', 'display_name');
}])
->orderBy('created_at', 'desc')
->get()
->toArray();
return Datatables::of($player)
//->addIndexColumn()
->addColumn('games', function ($row) {
$data = $row['get_games']['display_name'];
return $data;
})
->addColumn('phone_number', function ($row) {
$data = "";
if($row['phone_number'] == '000'){
$data = "-";
}else{
$data = $row['phone_number'];
}
return $data;
})
->addColumn('balance', function ($row) {
$data = …Run Code Online (Sandbox Code Playgroud) 我尝试从数据库中选择create_data,数据库中的日期格式类似于“2021-05-18 11:06:01”,但是当我检索并显示它时,它将显示类似于“2021-05”的格式-18T03:06:01.000000Z”。有谁知道为什么会变成这样吗?我想要的日期实际上就像数据库存储“2021-05-18 11:06:01”。然而,DB内的create_date格式是UTC +8,但接收时会显示UTC格式。
数据返回
[0] => Array (
[id] => 1
[log_name] => login
[description] => login
[subject_type] => App\Models\Users
[subject_id] => 0
[causer_type] => App\Models\User
[causer_id] => 2
[properties] => ""
[created_at] => 2021-05-18T03:06:01.000000Z
);
Run Code Online (Sandbox Code Playgroud)
代码
$lastLoggedActivity = ActivityLog::where('causer_id', $userid)
->orWhereIn('subject_id', $selectparentid)
->with('getLogType')
->with('getCauserDetails')
->orderBy('created_at', 'desc')
->get()
->toArray();
Run Code Online (Sandbox Code Playgroud)