php – MySQL:通过单词搜索改善查询时间

脚本

我在销售产品的网站上有搜索工具.
该页面是使用PHP和MySQL构建的,它针对将10个表连接在一起的Merged View进行搜索.视图中有大约12,000条记录,每条记录有20个字段.

用户可以使用多个(10-15)选择菜单搜索符合特定条件的产品.
然后,数据库根据产品主键的选择菜单值返回结果.

这一切都很好,并且速度足够快.

问题

但是,在同一页面上,我还包含了一个文本框,因此用户可以手动输入他们要搜索的内容而不是使用菜单.

当用户输入实际单词而不是通过菜单选择PK时,数据库必须进行单词搜索.
由于缺乏关于更好方法的知识,我将外国标准表中的所有文本值都整合到一个大字段中.
然后,文本框将搜索此concantenated字段中的单词.

再次,这可以正常工作,但将典型的搜索时间从0.1秒更改为2.0秒.
我已经将合并视图使用的表中的所有字段编入索引以努力改善时间,但这根本没有帮助.

由于谷歌可以在1秒内找到22,200,000页的“溢出”一词,而我的数据库需要2秒才能搜索一个单词,而不是12,000条记录.

如何改进数据库的布局和搜索方法?

最佳答案 在这种情况下我强烈推荐
Lucene Solr.它有一个非常适合这项任务的反向索引系统.您可以将它与PHP一起使用(通过前端与它连接).

仔细研究一下(至少看看一些教程),你会惊讶于你的运行速度.

点赞