首页 > 解决方案 > Laravel 搜索结果太慢

问题描述

我需要在我的网站中构建搜索功能。到目前为止,我已经以雄辩的方式实现了查询。是这样的,

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

现在,这个网站可能有一个很大的数据库。我的测试人员对其进行了测试并报告说,它执行得太慢了。我尝试使用 paginate 每页显示 20 个结果。速度仍然没有提高。

一位同事建议我使用 AJAX。我的问题是 AJAX 搜索的执行速度是否比 pgsql 中的基本 eloquent 更快?(不需要实时搜索)

另外,目前我的机器上没有大型数据库。我编写代码并将其发送给测试人员。我可以使用任何工具在 localhost 中获取查询时间吗?

标签: ajaxlaravelpostgresql

解决方案


仅仅使用ajax不会提高速度,您需要优化您的查询并正确使用它来提高速度。正如@duy 所说,您可以进行索引以提高速度。
Laravel 分页:默认 laravel 分页运行计数查询来获取总记录,如果您查询的是大型数据库,这可能需要一些时间。
您可以尝试使用自定义分页来提高速度。

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())


推荐阅读