1
Laravelクエリを製品リストに最適化したい。私はブランドだけでなく、商品リストを表示する必要があります。以下はコードですLaravel 5.4 Eloquent Query Optimization
また、検索で返された商品のすべてのブランドのリストが必要です。
方法1:
$productBrandsArray = $productListing->pluck('brand_id')->toArray();
問題は、これが唯一の理由は製品の10件のレコードのブランドを取得しますです、アレイ内のすべてのブランドのIDを取得し、ページ区切り
$productBrands = Brand::whereIn('brand_id', $productBrandsArray);
方法2(サブクエリ):
$productBrands = Brand::whereIn('brand_id', function ($query) use($searchTerm) {
$query->select('brand_id')
->from(with(new Product())->getTable())
->where(Product::getTableName().'.title', 'like', '%'.$searchTerm.'%');});
現在、サブクエリメソッドを使用して結果を取得していますが、同じ検索クエリが複数回実行されるため最適化されていないと思います。
お勧めします。
ありがとうございました。
問題はワイルドカードであり、あなたはインデックスを使用することができなくなりますので、 'LIKE「%テキスト%を」'使用するクエリを最適化することはできませんので、あなたが最初のワイルドカードを削除する必要がありますこのクエリを高速化するために。 – FMashiro
'FULLTEXT'インデックスの使用を検討してください。 –