"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();

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

你会更好地实现这一点,通过使用像Elastisearch。当您插入或更新记录时,您将需要做额外的事情,但从长远来看,当您查询该数据时,您将获得更好的性能。

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