如何减少显示输出所需的加载时间?

ni65a41a  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(353)

我使用这个查询从数据库中获取数据列表,然后使用datatable显示它。但是,在转换为datatable之前,查询需要较长的时间来加载数据。此应用程序是在laravel 5中构建的。

$itemregistrations = DB::table('itemregistrations')
                     ->join('sections', 'itemregistrations.sectionid', '=', 'sections.sectionid')
                     ->join('categories', 'itemregistrations.categoryid', '=', 'categories.categoryid')
                     ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
                     ->select('itemregistrations.*', 'sections.sectionname', 'categories.categoryname', 'operasi.operasiname')
                     ->get();

数据($itemregistrations)将使用foreach在blade中显示。。

@foreach($itemregistrations as $index => $value)                                               
              <tr>
                 <td>{{ $index+1 }}</td>
                 <td>{{ $value->sectionname }}</td>
                 <td>{{ $value->categoryname }}</td>
                 <td>{{ $value->operasiname }}</td>
                 <td>{{ $value->name }}</td>
                 <td>{{ $value->Nobadan }}</td
               </tr>
      @endforeach

laravel debug显示6个查询和1129个gate结果。。
debugbar中的查询列表

select `permissions`.*, `model_has_permissions`.`model_id` as `pivot_model_id`, `model_has_permissions`.`permission_id` as `pivot_permission_id` from `permissions` inner join `model_has_permissions` on `permissions`.`id` = `model_has_permissions`.`permission_id` where `model_has_permissions`.`model_id` = 1 and `model_has_permissions`.`model_type` = 'App\User'

   select `roles`.*, `model_has_roles`.`model_id` as `pivot_model_id`, `model_has_roles`.`role_id` as `pivot_role_id` from `roles` inner join `model_has_roles` on `roles`.`id` = `model_has_roles`.`role_id` where `model_has_roles`.`model_id` = 1 and `model_has_roles`.`model_type` = 'App\User'

  select `itemregistrations`.`ItemRegistrationID`, `itemregistrations`.`name`, `itemregistrations`.`Nobadan`, `sections`.`sectionname`, `categories`.`categoryname`, `operasi`.`operasiname` from `itemregistrations` inner join `sections` on `itemregistrations`.`sectionid` = `sections`.`sectionid` inner join `categories` on `itemregistrations`.`categoryid` = `categories`.`categoryid` inner join `operasi` on `itemregistrations`.`operasiid` = `operasi`.`operasiid`

debugbar中的示例门结果

success
   array:4 [▼
   "ability" => "Edit Pegawai"
   "result" => true
   "user" => 1
   "arguments" => "[0 => Edit APR]"
  ]

装载的原因是什么?是因为查询还是foreach循环?
如何减少加载时间来显示输出?在此之前,我使用分页,它的工作..但是我不能使用分页时使用datatable,因为它没有搜索所有的查询时使用分页。它将只搜索分页的第一页。
下面是在上述查询的phpmyadmin中解释查询的结果

sulc1iza

sulc1iza1#

您可以在itemregistration模型中使用with属性来加载所有关系。也许在表中添加索引会有所帮助

相关问题