なぜWherehasは非常に遅いですか?


こんにちは
私にあなたのコードの一部を見せてください
case 'first_name':
                        $eml = ($rule == 'or')
                            ? $eml->orWhereHas('user', function ($q) use ($condition) {
                                $q->where(
                                    'first_name','ilike','%bra%'
                                )->withTrashed();
                            })
                            : $eml->whereHas('user', function ($q) use ($condition) {
                                $q->where(
                                     'first_name','ilike','%bra%'
                                )->withTrashed();
                            });
                        break;
`
上のコードは非常に遅いですが、SQL出力はEXISTSを使用しています.
時間応答25秒!
`
(...)
LEFT OUTER JOIN "work_regimes" 
ON              "wra1"."work_regime_id" = "work_regimes"."id" 
WHERE           EXISTS 
                ( 
                       SELECT * 
                       FROM   "users" 
                       WHERE  "emls"."user_id" = "users"."id" 
                       AND    "first_name"::text ilike ?) 
AND             "users"."is_activated" = ? 
AND             "emls"."deleted_at" IS NULL 
ORDER BY        "id" ASC
応答時間は非常に非常に速い0.3秒です!
私は
When I replace
byに置き換えました、しかし、それは働いていません!