【问题标题】:Very slow query using second whereHas and "LIKE"使用第二个 whereHas 和“LIKE”进行非常慢的查询
【发布时间】:2020-12-21 15:09:02
【问题描述】:

这是我用来搜索存储在我的数据库中的城市的查询

$cities = City::with([ 'translation' => function ($query) {
            $query->where('language', 'en'); 
        }, 'country.translation' => function ($query) {
            $query->where('language', 'en');
        } ])->whereHas('country', function($query) {
            $query->whereIn('iso', [
                'AL',
                ...
            ]);
        })->whereHas('translation', function($query) use($location) {
            $query->where('name', 'LIKE', "%{$location}%");
        })->limit(5)->get();

拥有第二个whereHasLIKE 会使查询变得非常慢,实际上您必须等待几秒钟才能得到结果,没有它会非常快。我该如何改进

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    LIKE '%...%' 查询通常不会受益于合适的索引(即全表扫描)。

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 2016-06-09
      相关资源
      最近更新 更多