0

30 ~ 40 のミル レコード データベースに対して全文検索を使用しています。その 80% は 1 つのテーブルにあります。フルネームは複数の方法で保存できるため、フルテキストで姓名を検索しています。 「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 マークを簡単に達成できるはずですが、ヒットする可能性は高くなりますが、時間がかかるようです。

4

1 に答える 1

0

MySql の代わりに検索エンジンを使用すると、時間を節約できます。SolrまたはSphinxを見てください。

Sphinx には mysql アドオンがあります。

于 2013-03-06T16:11:35.607 に答える