如何减少显示输出所需的加载时间?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何减少显示输出所需的加载时间?相关的知识,希望对你有一定的参考价值。
我使用此查询从数据库中获取数据列表,然后使用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显示在刀片中。
@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调试显示6个查询和1129个门结果。
调试栏中的查询列表
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` = 'AppUser'
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` = 'AppUser'
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`
样本门导致调试栏
success
array:4 [▼
"ability" => "Edit Pegawai"
"result" => true
"user" => 1
"arguments" => "[0 => Edit APR]"
]
加载的原因是什么?是因为查询还是foreach循环?
如何减少显示输出的加载时间?在此之前我使用分页并且它有效。但是在使用数据表时我不能使用paginate,因为它在使用paginate时不会搜索所有查询。它只会搜索分页的第一页。
以下是上述查询的phpmyadmin中EXPLAIN查询的结果
答案
您可以在Itemregistration模型中使用With属性来加载所有关系。也许在表中添加索引可以提供帮助
以上是关于如何减少显示输出所需的加载时间?的主要内容,如果未能解决你的问题,请参考以下文章