0

customer_id、customer_name、email、password、statusなどのフィールドを持つcustomerテーブルがあります。

現在、customer_idのみがインデックスに登録されています(主キーであるため)

次のように顧客を選択するクエリはほとんどありません

select * from customer 
where status=1 and email<>'' 
and email is not null 
and password<>'' 
and password is not null

130万件のレコードがあるため、実行速度が遅くなります。そのため、メールフィールドにインデックスを追加することを考えていました。単純なインデックスが機能するようにインデックスを作成するか、FULLTEXTインデックスを使用する必要があるかを知りたい

4

1 に答える 1

1

FULLTEXTインデックスは、列内の単語を検索するのに役立ちます。

本当に空の(そして null でない) メールとパスワードを検索するだけなら、単純なインデックスで十分です。

このクエリの場合、より関連性の高いインデックスは次のようになります。

ALTER TABLE customer ADD INDEX (status, email, password);

[編集]

Dukelingらによって正しく指摘されているように。customers、ほとんどの人が電子メールまたはパスワードを設定している場合、そのようなインデックスはおそらく役に立たない.

上記を仮定すると (ほとんどの顧客は電子メールとパスワードを設定しています)、クエリは多くのレコードを返し、インデックスはほとんど役に立ちません (nos と raina77ow のアドバイスによる)。

唯一確かなことは、FULLTEXTこの場合、インデックスは役に立たないということです。

于 2013-03-04T13:37:08.917 に答える