首页 > 解决方案 > 是否针对大型数据库的搜索栏优化了“LIKE”查询?

问题描述

我的标题中有一个搜索栏,它将搜索大型企业数据库并检查该表的 4 列以查找用户搜索的相似词。

我的代码如下使用“LIKE”通过它们进行查询。因为随着项目的增长,数据库会非常大,比如 100000 多个企业,我想知道它是否经过优化?我应该考虑用其他方法在数据库中搜索类似的单词吗?

$result = Business::where('name','LIKE','%'.$search.'%')
  ->orWhere('description','LIKE','%'.$search.'%')
  ->orWhere('website','LIKE','%'.$search.'%')
  ->orWhere('facebook','LIKE','%'.$search.'%')
  ->orWhere('twitter','LIKE','%'.$search.'%')
  ->get();

标签: laravellaravel-7

解决方案


我不建议您使用直接 SQL 查询来实现对非常大的数据库的搜索。首先,这在 DB 上将是一个非常繁重的过程,因此会增加响应时间。

您最好使用Elastisearch之类的工具来实现这一目标。当您插入或更新记录时,您将需要做额外的事情,但从长远来看,当您查询该数据时,您将获得更好的性能。

注意:您将需要额外的服务器或服务,这可能会增加您的运行成本。但它会减少数据库的负载。


推荐阅读