首页 > 解决方案 > 我需要找到一种方法来优化从多个数据库表中提取 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 提取和搜索它(动态执行此操作) 我刚刚开始构建一个临时表来存储所有信息,因此我只能搜索一个表,但觉得这会使数据非规范化并导致糟糕的用户体验。

数据库优化对我来说是一个薄弱环节。有没有办法优化它所以它更快。仅出于搜索目的创建辅助数据存储表会更好吗?

标签: mysqleloquentlaravel-7

解决方案


推荐阅读