使用170,000行的SQL表进行更好的性能搜索



我有170,000行的SQL表。每行都有字符串长的列长约600个字符。

我想列出包含搜索关键字的所有行。

使用LIKE '% keyword %'大约需要1000ms。我的应用程序是使用雄辩的。

您有什么想法是什么方法是表演者最好的?我需要有选项来搜索案例敏感/敏感,敏感/iNSSESINE,精确的短语或仅按随机顺序进行多个单词。因此,当我尝试TNTSearch时,性能很棒,但是没有太多选择。

另外,我尝试在查询中创建索引和匹配功能,但也有一些限制。

在列上定义 FULLTEXT索引,您希望能够搜索以极大地提高搜索速度。

,只能在myisam和innodb桌子上工作。

Google IT或在此处查看

类似于通配符开头的查询无法利用索引。随着桌子尺寸的增长,性能将继续降低。

我会推荐以下提高性能的选项之一:

  1. 您可以使用Laravel Scout

Laravel Scout提供了一种简单的,基于驱动程序的解决方案,用于将全文搜索添加到您的雄辩模型中。

盒子侦察员支持阿尔戈利亚,但还有其他可用的驱动程序,包括tntsearch

https://github.com/teamtnt/laravel-scout-scout-tntsearch-driver


  1. 您可以使用全文索引来提高搜索性能。

雄辩不支持FullText搜索,但是有一些第三方软件包添加了支持。

ex:

  • https://github.com/jarektkaczyk/eloquence-base
  • https://github.com/swisnl/laravel-fulltext

我建议使用Solr与Solarium结合使用:https://solar.readthedocs.io/en/latest/

最新更新