Есть каталог сайтов (сайты проверяются перед добавлением в каталог, то есть со статусом `отклонен = 0` и `принят = 1`), у сайтов есть теги. Так вот я хочу вывести все теги с отношениями с сайтами со статусом `принят` (случайным образом по 50 шт.).
Для тегирования использую пакет `cartalyst/tags: v2.1`, и для удобства создал модель `Tag` и настроил отношения (так как сам пакет не предоставляет модель для прямой работы с тегами)...
Сам запрос выглядит так:
$tags = Tag::whereHas('catalogue', function ($query) {
$query->where('status', 1);
})
->orderBy(DB::raw('RAND()'))
->take(50)
->get();
Но теперь `response time` увеличился до ~9 секунд, раньше было ~1.5 секунд (это почему-то моя ВМ так тормозит, в продакшене ~0.4 ms).
Как оптимизировать выше указанный код?
Я бы хотел закешировать максимум на 5 минут, но 9 секунд на каждые 5 минут это очень много...