При использовании нескольких whereHas () для одной и той же таблицы и столбца (taggables.title). время выполнения увеличивается в 40 раз - PullRequest
1 голос
/ 10 июля 2019

Я использую whereHas (), чтобы сопоставить блюда ресторана с несколькими тегами.При сопоставлении только одного тега он работает нормально, но для нескольких тегов время выполнения увеличивается.Что может быть причиной этого?

Я пробовал два метода, используя несколько whereHas ()

App\Dish
        ::whereHas('tags', function($q) {
                return $q->where('title','tag1');
        })
        ->whereHas('tags', function($q) {
                return $q->where('title','tag2');
        });

, используя один whereHas и объединяя все теги

App\Dish
        ::whereHas('tags', function($q) {
                return $q->whereIn('title',['tag1','tag2']);
        },'=',2);

Я пробовал индексировать таблицу taggables (tag_id и taggable_id)

1 Ответ

1 голос
/ 10 июля 2019

Причиной этого было то, что поля таблицы taggables (tag_id, taggable_id и taggable_type) не были проиндексированы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...