MySQL多列索引和OR语句

MySQL多列索引和OR语句,mysql,indexing,multiple-columns,Mysql,Indexing,Multiple Columns,我在MySQL中找到了一个关于索引的 上面的文章讨论了“AND”语句,其中的“SELECT”类似于 可以利用多列索引,如 ALTER TABLE people ADD INDEX fname_lname_age (firstname,lastname,age); 但在我的web应用程序中,我通常有一个文本字段输入,用户可以在其中键入firstname或lastname的部分内容,从而产生如下查询: SELECT peopleid FROM people WHERE ((first

我在MySQL中找到了一个关于索引的

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

可以利用多列索引,如

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
那么,在这种情况下,多列索引是否也能提高性能


提前感谢

官方有一章专门介绍这一点

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

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

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

感谢您阅读本章!我的答案似乎是“否”:带有“或”cancatenation的不同字段不会利用多列索引。。。
EXPLAIN SELECT peopleid 
FROM people 
WHERE ((firstname LIKE '%$parameter%') 
        OR (lastname LIKE '%$parameter%')) 
    AND age=17