Я использую этот запрос, чтобы получить список данных из базы данных, а затем отобразить его с использованием данных. Тем не менее, запрос занимает больше времени для загрузки данных, прежде чем преобразовать в Dataatable. Это приложение встроено в 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` = '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`
Результаты Sample Gate приводят к панели отладки
success
array:4 [▼
"ability" => "Edit Pegawai"
"result" => true
"user" => 1
"arguments" => "[0 => Edit APR]"
]
В чем причина загрузки? Это потому что запрос или цикл foreach?
Как уменьшить время загрузки для отображения вывода? До этого я использую пагинацию, и это работает .. Однако я не могу использовать пагинацию при использовании datatable, так как он не выполняет поиск по всем запросам при использовании пагинации. Он будет искать только на первой странице нумерации страниц.
Ниже приведен результат запроса EXPLAIN в phpmyadmin вышеупомянутого запроса