Я создал запрос, чтобы получить список сотрудников, использующих этот запрос.Он запускается после проверки уровня разрешений входящего в систему пользователя.
if (Auth::user()->hasPermissionTo('All Sections')) {
$itemregistrations = DB::table('itemregistrations')
->join('sections', 'itemregistrations.sectionid', '=', 'sections.sectionid')
->join('categories', 'itemregistrations.categoryid', '=', 'categories.categoryid')
->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan', 'sections.sectionname', 'categories.categoryname', 'operasi.operasiname')
->get();
}
Однако запрос загружается довольно долго, около минуты до завершения загрузки.Список отображался около 1115.
Как сократить время загрузки?
Я читал про готовую загрузку, чтобы уменьшить время загрузки.Но мое испытание не увенчалось успехом.
секция - это отдел персонала.
категории - это уровень персонала
operasi - это категория персонала, относящаяся к категориям, каждая категория имеетего собственное имя_операции.
Это индексирование в таблице регистрации элементов.
![enter image description here](https://i.stack.imgur.com/nEh5Q.png)
Я установил отладчик laravel и выдаю такой результат: -6 просмотров -4 запроса
select * from `users` where `id` = 1 limit 1
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`
-1116 ворот
Приведенный выше запрос фильтруется в соответствии с несколькими разрешениями.
это индексы для задействованной таблицы:
- индекс таблицы ролей
![role index](https://i.stack.imgur.com/QCgNl.png)
индекс таблицы разрешений ![permission](https://i.stack.imgur.com/lbXxp.png)
модель имеет таблицу ролей ![enter image description here](https://i.stack.imgur.com/pybpi.png)
роль имеет таблицу разрешений
![enter image description here](https://i.stack.imgur.com/wFnTy.png)