DBからデータを取得するたびにデータベース接続を減らすことについて質問があります。私はダッシュボードでは5つのテーブル(通知、受注、ユーザー、製品、取引)Laravel 5.5最適化クエリ
があると、私は示さなければならない:
- 未読通知
- 受注統計
- 製品 の数
- 取引統計
最も簡単な方法(擬似コード):
$notis = Notification::where('unread')->get();
$orderStat = Order::join('user')->where('count(order.id)', 'status')->groupby('status');
$product = Product::count();
$transactions = Transaction::join('user')->where('count(trans.id)', 'status')->groupby('status');
私のメンターは、多くの多くのレコードの各テーブルに以上のテーブルを必要とダッシュボード(ないためがあり、このソリューションは、場合には、サーバーのスピーチを減らすだろうと言ったように、私は、4つの別々のクエリを実行する必要があります結合する)を照会する。
Iすでにやった:外部キー列に
- インデックス
- 雄弁のためのイーガーローディングそれは
- (ORレンダリングされたUIの後にデータをロードするために、AJAXを使用して)利用できるかどう
私が欲しいです上記の場合の処理時間を短縮する方法はありますか?。
また、connection pool
に関する他の質問は、速度を上げるために使用すると述べています。調査した後に見つけたLaravelは既に接続プールをしましたか?
編集:
ユーザーには多くの通知、注文、取引があります。
私は、上記で言及していないパフォーマンスを改善する方法を尋ねたいだけです。
を使用してクエリをプロフィールあなたはすべてのテーブル間の関係、またはスキーマを提供することはできますか? – C2486
ユーザーには多くの通知、注文、取引があります。 –
status = count(id)を選択して何を達成しようとしていますか? – fab2s