1

MySQL のインデックスに関する興味深い SitePoint の記事を見つけました

上記の記事では、「SELECT」のような「AND」ステートメントについて説明しています。

SELECT peopleid 
FROM people 
WHERE firstname='Mike' 
    AND lastname='Sullivan' 
    AND age=17

次のような複数列のインデックス作成を利用できます

ALTER TABLE people 
    ADD INDEX fname_lname_age (firstname,lastname,age);

しかし、私の Web アプリケーションでは、多くの場合、ユーザーが名または姓の一部を入力できるテキストフィールド入力があり、次のようなクエリになります。

SELECT peopleid 
FROM people 
WHERE ((firstname LIKE '%$parameter%') 
        OR (lastname LIKE '%$parameter%')) 
    AND age=17

では、このような場合でも、マルチカラム インデックスはパフォーマンスを向上させるのでしょうか?

前もって感謝します

4

1 に答える 1

2

特にこれについては、公式のMySQL マニュアルに章があります。

しかし、あなたが本当に学ぶべきことはEXPLAIN. 次のようにクエリの前に置きます。

EXPLAIN SELECT peopleid 
FROM people 
WHERE ((firstname LIKE '%$parameter%') 
        OR (lastname LIKE '%$parameter%')) 
    AND age=17

また、インデックスが使用されているかどうかを確認できます。

于 2013-01-30T11:13:55.910 に答える