我正在使用此查詢來篩選出具有城市和類別的商店。當我在stores
表中有大約1000條記錄時,它工作正常。現在,當我有5000條記錄時,需要大約3-10秒才能生成結果。如何使用whereHas優化此查詢?
在我的情況下,商店屬於多個類別。
如何使用Eloquent orm或DB::raw()
優化此查詢?
$stores = Store::where('city_id', $city_id)
->where('disabled', '0')
->whereHas('categories', function($q) use ($category_id){
$q->where('category_id', '=', $category_id);
})
->orderBy('rating','DESC')->paginate(10);
你對你的表的任何索引?很難以雄辯的形式從查詢中得知100%,但是這個_應該生成合理的SQL。 –
@JoachimIsaksson是的,這兩個表都有索引。通過運行這個命令'SHOW INDEX FROM stores;'來確認。 –
看看這個問題它可能會幫助你,並特別評論凱伊斯https://github.com/laravel/framework/issues/3543 –