首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当数据超过10k时,Laravel数据加载缓慢

当数据超过10k时,Laravel数据加载缓慢
EN

Stack Overflow用户
提问于 2021-09-23 05:01:43
回答 2查看 2.1K关注 0票数 0

加载超过10k记录时性能缓慢

页面加载:8.00秒

问题:当数据超过10k时,是否会遇到类似的问题,返回数据的速度会变慢?有优化你的主意吗?当用户访问页面时,即使我已经在表中索引,加载所有数据也需要将近8秒的时间。

系统详细信息

PHP 7.3,Laravel 8.4,Laravel-Yajra-Datatables v9.18。

控制器

代码语言:javascript
复制
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 = number_format($row['balance'], 2);
                    return $data;
                })
                ->addColumn('status', function ($row) {
                    if ($row['status'] == 1) {
                        $actionBtn = '<span class="badge badge-pill badge-success">' . __('mainlanguage.enabledtxt') . '</span>';
                    } else if($row['status'] == 0) {
                        $actionBtn = '<span class="badge badge-pill badge-danger">' . __('mainlanguage.disabledtxt') .'</span>';
                    }
                    return $actionBtn;
                })
                ->addColumn('action', function ($row) {
                   $actionBtn  = '<span><button class="btn btn-primary btn-sm mt-1 mr-1 setscrore" data-gameusername="' . $row['game_username'] . '" data-game="' . $row['get_games']['title'] . '" data-username="' . $row['player_no'] . '" data-gid="' . $row['games_id'] . '"><i class="fa fa-credit-card"></i> ' . __('mainlanguage.setscoretxt') . '</button>';
                   $actionBtn .= '<button class="btn bg-orange color-palette btn-sm mt-1 mr-1 resetpwd" data-gameusername="' . $row['game_username'] . '"data-gid="' . $row['games_id'] . '"data-username="'.$row['player_no'].'" ><i class="fa fa-unlock"></i> ' . __('mainlanguage.resetpasstxt') . '</button>';
                   if($row['status'] == 1){
                        $actionBtn .= '<button class="btn btn-danger btn-sm mt-1 mr-1 disable" datatype=0 data-gameusername="' . $row['game_username'] . '" data-gid="' . $row['games_id'] . '" data-username="' . $row['player_no'] . '"><i class="fa fa-ban"></i> ' . __('mainlanguage.disabletxt') . '</button>';
                   }else{
                        $actionBtn .= '<button class="btn btn-success btn-sm mt-1 mr-1 disable" datatype=1 data-gameusername="' . $row['game_username'] . '" data-gid="' . $row['games_id'] . '" data-username="' . $row['player_no'] . '"><i class="fa fa-ban"></i> ' . __('mainlanguage.enabledtxt') . '</button>';
                   }
                   $actionBtn .= '<button class="btn bg-teal color-palette btn-sm mt-1 mr-1 gamelog" data-gamename="'.$row['get_games']['title'].'" data-gameusername="' . $row['game_username'] . '" data-gid="' . $row['games_id'] . '" data-username="' . $row['player_no'] .'"><i class="fa fa-scroll"></i> ' . __('mainlanguage.gamelogtxt') . '</button>';
                   $actionBtn .= '<button class="btn bg-maroon color-palette btn-sm mt-1 mr-1 transactionlog" data-gameusername="' . $row['game_username'] . '" data-gid="' . $row['games_id'] . '" data-username="' . $row['player_no'] .'"><i class="fa fa-book"></i> ' . __('mainlanguage.tranactilogtxt') . '</button></span>';
                   return $actionBtn;
                })
                ->rawColumns(['games', 'balance', 'status', 'action', 'phone'])
                ->make(true);
        }
    }

JS

代码语言:javascript
复制
$('.playertable').DataTable({
            "language": {
                "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/"+lag
            },
            processing: true,
            {{-- serverSide: true,  --}}
            responsive: true,
            searching:  true,
            "order": [[ 5, "desc" ]],
            ajax: {
                url: "{{ route('getplayerlist') }}",
                type: 'GET',
                data: function (d) {
                    {{-- d.name = $('#name').val();
                    d.email = $('#email').val(); --}}
                }
            },
            columns: [
                    {data: 'games', name: 'games'},
                    {data: 'player_no', name: 'username'},
                    {data: 'game_username', name: 'gameid'},
                    {data: 'balance', name: 'balance'},
                    {data: 'phone_number', name: 'phone'},
                    {data: 'created_at', name: 'createdate'},
                    {data: 'status', name: 'status'},
                    {data: 'action', name: 'action', orderable: false, searchable: false, 'className': "dt-center"},
                ]
        });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-23 05:51:25

将代码更改为:

代码语言:javascript
复制
$player = Player::where('parent_id', Auth::user()->id)
      ->with(['getGames' => function ($q){
          $q->select('id', 'title', 'display_name');
  }])
  ->orderBy('created_at', 'desc');

  return Datatables::eloquent($player)
  //....
票数 2
EN

Stack Overflow用户

发布于 2021-09-23 05:22:13

取消注释serverSide:真正的

移除这个

代码语言:javascript
复制
->get()->toArray();

并将其替换为:

代码语言:javascript
复制
->latest();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69294268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档