Webappには遅い機能が1つあります。laravelを使用してMySQLクエリを高速化するには
私はこの機能を5〜6秒から1〜2秒の間にスピードアップするコードを提案してください。
表:労働者(ID、Fi回線rst_name、LAST_NAME)
表:店舗(ID、名前)
表:worker_store(ID、worker_id、STORE_ID)
私はテーブルを持つデータベースを持っています
workerは、worker_storeテーブルを介して1つまたは複数の店舗に接続されているという考えがあります。
Laravelアプリでは、1つの店舗を利用し、ワーカーがこの特定の店舗に接続していることを示しています。これは、「選択済み」とマークされた接続された作業者と選択されていない他のすべての作業者の「選択」フィールドとして表示する必要があります。私の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