2009-09-24 58 views
1

目前,我有以下的全文索引设置:创建全文检索优化

全文于:

号码 - 名称 - 后缀 - 方向 - 城市 - 州 - 邮政编码

Select id, MATCH(Number, Name, Suffix, Direction, City, State, ZIPCode) 
AGAINST ("Test") as Relevance from test where 1, 
and MATCH(Number, Name, Suffix, Direction, City, State, ZIPCode)  
AGAINST ("+Test" IN Boolean Mode) HAVING Relevance > 0.2 

一个地址。它目前在MySQL的MyISAM数据库类型,但我真的不喜欢当昂贵的查询命中时,他们锁定整个表,并超过一百万行,我试图优化我能做的最好。

切换到Innodb有帮助吗? Innodb支持MyISAM的查询类型吗?

有关如何更好地优化此查询并保留全文搜索的其他建议?

谢谢!

回答

1

InnoDB不支持全文搜索。

另一种选择是使用Sphinx,这很容易设置和快速。

+0

将看看这个。还有其他明显的区别吗? – Petrogad 2009-09-24 19:28:36

+1

我在尝试优化大型应用程序时使用了全文搜索。表演一般。我们最终切换到innodb并使用其他索引。虽然完整的通配符搜索(例如'%some%')会非常缓慢,但性能大致相同。最后,我转向狮身人面像,永远不会回头。 Sphinx与MySQL很好地集成,但作为一个独立的进程运行。 – jonstjohn 2009-09-24 19:39:37

+0

真棒会给它一个旋风!感谢:D – Petrogad 2009-09-24 20:09:51