私はニュースレタースクリプトを作成していますので、アドレスを検索する必要があります。 FULLTEXTを使用してテーブルのインデックスを作成しましたが、次のようなクエリを実行したとき:メールアドレスを検索したときのMySQLの一致
SELECT * FROM addresses WHERE MATCH(email) AGAINST("[email protected]" IN BOOLEAN MODE)
私は奇妙な結果を得ます。 "example.com"にあるすべての電子メールと、 "name"というユーザを持つすべての電子メールが表示されます。たとえば、私が得る:
[email protected]
[email protected]
[email protected]
私は「%[email protected]%」のように使用するクエリを書き直しますが大きなテーブルのためにそれが完了するまでに時間のとんでもない量になります。 これには解決策がありますか?完全に一致するメールのみを表示するように検索するときに、そのメールの一部ではないことをおすすめします。前もって感謝します。
:だからあなたのクエリを変更します'? – Jivings
7Mレコードテーブルでは、それを見つけるのに5秒かかります。 MATCH AGAINSTを使うとずっと高速です。 – Vladimir
電子メール列に通常のインデックスを付けて、直接比較クエリを高速化します。ここでフルテキストインデックスには利点はありません。 – bobince