我需要在我的网站中建立搜索功能。到目前为止,我已经雄辩地实现了查询。就是这样
`$syukko = Syukko::where('category', $cat)
->where('status', 1)
->get();`
现在,该网站可能具有大型数据库。我的测试人员对其进行了测试,并报告说它的执行速度太慢。我尝试使用分页显示每页20个结果。速度仍然没有提高。
一个同事建议我使用AJAX。我的问题是AJAX搜索的执行速度是否比pgsql中的基本口才更快? (无需实时搜索)
此外,当前我的机器上没有大型数据库。我编写代码并将其发送给测试人员。我可以使用任何工具获取本地主机的查询时间吗?
答案 0 :(得分:2)
仅使用ajax不会提高速度,您需要优化查询并正确使用它以提高速度。如@duy said所示,您可以进行索引编制以提高速度。
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())
答案 1 :(得分:1)
在这种情况下,必须在category
和status
上创建数据库索引,以提高数据库性能。
Ajax不能大大提高性能,因为最后您应该使用雄辩的语言访问数据库并返回数据。