MySQL多列索引和OR语句

时间:2013-01-30 10:43:11

标签: mysql indexing multiple-columns

我在MySQL中找到了关于索引的interesting SitePoint article

上面的文章讨论了“AND”语句,其中“SELECT”如

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应用程序中,我经常有一个文本字段输入,用户可以在其中键入firstname或lastname的部分,从而产生如下查询:

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

那么,在这样的情况下,多列索引是否也能提高性能?

提前致谢

1 个答案:

答案 0 :(得分:2)

官方MySQL manual中有一章特别针对此。

但你真正应该了解的是EXPLAIN。将它放在您的查询前面,如下所示:

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

您可以查看是否使用了索引。