Webapp, который имеет одну медленную функцию.Как ускорить запрос Mysql с помощью laravel
Прошу предложить код для ускорения этой функции с 5-6 секунд до 1-2 секунд.
У меня есть база данных с таблицами:
стол: Workers (идентификатор, фи rst_name, last_name)
стол: Магазины (номер, имя)
стол: worker_store (идентификатор, worker_id, store_id)
Идея состоит в том, что работники подключены к одному или нескольким магазинам через таблицу worker_store.
В приложении Laravel У меня есть функция, которая берет один магазин и показывает, что рабочие подключены к этому конкретному магазину. Это должно отображаться как «выбрать» поле с подключенными рабочими, отмеченными как «выбранные», и всеми другими работниками, которые не выбраны. Мой ледовый код Laravel выглядит так:
<select multiple name="workers[]" id="workers" class="form-control">
@foreach (App\Worker::orderBy('last_name')->get() as $worker)
<option value="{{$worker->id}}"
**@if ($object->hasWorker($worker->id))
selected @endif**>{{$worker->getName()}}
</option>
@endforeach
</select>
База данных MySQL и рабочий стол имеет 30 000 записей. Это очень медленно, в то время как laravel составляет 30 000 отдельных запросов к базе данных, чтобы проверять каждого работника, если он связан с определенным хранилищем (выделена жирная часть кода выше).
Пожалуйста, предложите решение, в котором не требуется запрашивать базу данных за 30 000 раз и произвести полное заполнение в течение не более 1-2 секунд (текущий код занимает около 5-6 секунд).
Показать код, который вы используете, какие запросы рабочих. Также посмотрите здесь ... https://laravel.com/docs/5.3/eloquent-relationships#eager-loading – user3158900
mycode есть в моем Вопросе – Hassaan
@Guanapado Pado, почему бы вам не использовать Datatable и laravel paginate. здесь примеры, которые могут помочь вам реализовать в вашем проекте. [https://github.com/yajra/laravel-datatables] [https://datatables.net/examples/server_side/post.html] [https://laravel.com/docs/5.3/pagination] – Manish