Результат поиска Laravel слишком медленный - PullRequest
0 голосов
/ 22 января 2019

Мне нужно создать поисковую функцию на моем сайте. До сих пор я реализовал запрос в красноречивом. Это так,

`$syukko = Syukko::where('category',  $cat)
->where('status', 1)
->get();`

Теперь этот сайт может иметь большую базу данных. Мой тестер проверил его и сообщил, что он работал слишком медленно. Я пытался использовать paginate, чтобы показать 20 результатов на странице. Тем не менее скорость не улучшалась.

Один коллега предложил мне использовать AJAX. Мой вопрос заключается в том, выполняет ли поиск AJAX быстрее, чем базовый eloquent в pgsql? (поиск в режиме реального времени не требуется)

Кроме того, в настоящее время у меня нет большой базы данных с моей машиной. Я пишу код и отправляю его тестеру. Могу ли я использовать какой-либо инструмент для получения времени запроса в localhost?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Простое использование ajax не увеличит скорость, вам нужно оптимизировать свой запрос и использовать его правильно, чтобы повысить скорость. Как @duy сказал, вы можете сделать индексацию для повышения скорости.
Разбиение по страницам Laravel: По умолчанию разбивка по страницам Laravel выполняется count count , чтобы получить общее количество записей, что может занять некоторое время, если вы запрашиваете большую базу данных.
Вы можете попробовать пользовательскую нумерацию страниц, что увеличит скорость.

function showSearchR(Request $request){
   $page = (isset($request->page))?$request->page:1;
    $limit = 20;
    $offset = ($page-1)*$limit;
    $syukko = Syukko::where('category',  $cat)
    ->where('status', 1)
    ->offset($offset)->limit($limit)
    ->get();
}

Чтобы получить время запроса, вы можете использовать журнал запросов laravel:
Включите журнал запросов с помощью DB::enableQueryLog();
, затем используйте этот код после исключения запроса dd(DB::getQueryLog())

0 голосов
/ 22 января 2019

В этом случае вам нужно создать индекс базы данных для category и status, чтобы повысить производительность базы данных.

Ajax не может значительно улучшить производительность, потому что, наконец, вы должны использовать eloquent для доступа к базе данных и возврата данных.

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