1

我发现了一篇关于 MySQL 中索引的有趣的 SitePoint 文章

上面的文章谈到了“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 应用程序中,我经常有一个文本字段输入,用户可以在其中输入名字或姓氏的一部分,从而产生如下查询:

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 回答