ajax - Laravel 搜索结果太慢
问题描述
我需要在我的网站中构建搜索功能。到目前为止,我已经以雄辩的方式实现了查询。是这样的,
`$syukko = Syukko::where('category', $cat)
->where('status', 1)
->get();`
现在,这个网站可能有一个很大的数据库。我的测试人员对其进行了测试并报告说,它执行得太慢了。我尝试使用 paginate 每页显示 20 个结果。速度仍然没有提高。
一位同事建议我使用 AJAX。我的问题是 AJAX 搜索的执行速度是否比 pgsql 中的基本 eloquent 更快?(不需要实时搜索)
另外,目前我的机器上没有大型数据库。我编写代码并将其发送给测试人员。我可以使用任何工具在 localhost 中获取查询时间吗?
解决方案
仅仅使用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())
推荐阅读
- java - Jar Runtime 中带有 Selenium webdriver 的 Java Gradle 错误
- php - 如何检查/查找字符串中是否有多个字母 | PHP
- python - 使用阈值对点是否在指定区域内进行分类 - python
- python - 编译 QML 源代码以使用 PySide2 进行保护
- c# - mongodb C# 使用查找和方面进行计数
- laravel - 如何将html表格行与1个参考和多个项目结合起来?
- pandas - 在 Dask 中,如何删除未在另一列的所有值中重复的数据?
- sql - 为什么我的查询可以使用 RIGHT() 和 LEFT() 函数,但不能使用 LIKE 谓词?
- vba - 搜索表格旁边的标题样式时 Range.Find 失败
- java - 将二维数组传递给另一个类,但无法返回对象