【发布时间】:2013-03-07 00:11:35
【问题描述】:
我正在对 30-40 个工厂记录数据库使用全文搜索。其中 80% 在一张桌子上。我正在搜索名字和姓氏作为全文,因为全名可以以多种方式存储“比尔盖茨”“盖茨,比尔”“比尔和梅琳达盖茨”等。我们还有一个昵称数据库所以它将搜索“bill”、“will”、“william”等。查找昵称完全不需要时间,但是一旦我实现了包含昵称的查询,它现在需要更长的时间。
SELECT * FROM db1
WHERE MATCH (Name) AGAINST (' +bill +gates 'IN BOOLEAN MODE) UNION ALL
... (then the other 8 dbs the same) limit 500
相比:
SELECT * FROM db1
WHERE MATCH (Name) AGAINST (' +("bill" "will" "william") +gates 'IN BOOLEAN MODE) UNION ALL
... (then the other 8 dbs the same) limit 500
有没有办法加快速度?与 3-5 秒相比,搜索需要 40 多秒。像比尔盖茨这样的名字应该很容易达到 500 大关似乎需要更长的时间,即使它有更多的机会达到。
【问题讨论】:
标签: php mysql performance full-text-search