mysql - 我需要找到一种方法来优化从多个数据库表中提取 laravel 中的数据
问题描述
这是我想要做的事情。我有多个域指向同一个 laravel (7) 安装。在数据库中,我有一个站点表。该平台是一个健身房管理平台。因此,基本上每个健身房都是一个拥有自己 ID 的网站。健身房有国家,州,城市。现在它只有美国,但我会扩展它。在主页上有一个自动完成功能。当有人开始打字时,在第二个字母之后,它开始尝试匹配与字母匹配的健身房或位置。
例如,如果您输入“the”,它将搜索以该字母开头的站点 (site_name)、国家、州、城市。我只想显示处于活动状态的位置,以便找到与其匹配的所有健身房。
$gyms = Sites::where('active',1)->where('site_name','Like',$request->chars.'%')->get();
然后我用它来查找位置
$states = States::whereIn('id',$gyms->pluck('state_id')->toArray())->where('state','Like',$request->chars.'%')->get();
以此类推每个位置。该站点较旧,因此我尚未将其转换为 VueJS,而是使用 jquery ajax 来执行此操作。问题是重叠和速度。我努力了:
向表列添加索引 提取信息并将其放入集合中并将其存储在会话中并在需要时通过它进行搜索 创建一个视图并使用 javascript 提取和搜索它(动态执行此操作) 我刚刚开始构建一个临时表来存储所有信息,因此我只能搜索一个表,但觉得这会使数据非规范化并导致糟糕的用户体验。
数据库优化对我来说是一个薄弱环节。有没有办法优化它所以它更快。仅出于搜索目的创建辅助数据存储表会更好吗?
解决方案
推荐阅读
- python - 同时运行 jupyter notebook 单元?
- php - PHP 代码 INCLUDE 在通过 $Value 回显时留下一个数字
- reactjs - Redux + React如何仅更改充满对象的数组中的一个元素值?我有工作应用程序,只是想确保我做对了
- java - 如何为具有相同内容的多个片段创建片段模板(具有变量和方法的类、布局)?
- c - clock() 函数不测量 qsort() 时间
- python - JupyterHub 在所有 CPU 上执行
- reactjs - 在行悬停时渲染 Ant Table 中的操作菜单
- android - 更新/迁移 - Admob 播放服务 Ads 19.8.0
- vue.js - TypeError: this.$cookies 未使用 vue-cookie 定义
- flutter - 在颤动中使用 SelectableText 将复制文本更改为 WebSearch 文本