@Ismail-1

Как быстрее выбирать записи из базы данных laravel?

Есть таблица в БД где хранятся объявления по аренде недвижимости

kvartiras

id | tip_obekta | cena | etag | etagnost | и тд. Ещё около 20 полей.
1 | Квартира | 1000 | 1 | 5 |

На сайте есть фильтр для выбора объявлений по параметрам
public function getAllAds(Request $request){
            $query = Kvartira::query();

           //Если применен фильтр
                  if($filter != 'Фильтр не применен'){

                 //Поиск по области
                 $query->when(isset($filter['oblast']) && $filter['oblast'] != null, function($query) 
                 use($filter){
                         return $query->where('oblast', $filter['oblast']);
                   });

                 //Поиск по городу
                 $query->when(isset($filter['gorod']) && $filter['gorod'] != null, function($query) 
                  use($filter){
                       return $query->where('gorod', $filter['gorod']);
                  });

После применения фильтра я получаю итоговые данные
$ads_arr = $query->where('control',  'Активно')
                ->orderBy('top', 'desc')
                ->orderBy('updated_at', 'desc')
                ->paginate(50);

Сортирую по 2 полям top , updated_at
Top - Если объявление подано в ТОП то получим вначале их,
и по полю created_at и получаю пагинацией по 50 записей.

Если в БД - 50 тысяч объявлений то при запросе Первой страницы
Результат возвращается через 2, 3 секунды.

А если запрос например объявлений со страницы 900 то = Результат 16, 17 секунд

Как уменьшить время получения результата на больших страницах?
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы