MySQL多列索引和OR语句
我在MySQL中找到了一个关于索引的 上面的文章讨论了“AND”语句,其中的“SELECT”类似于 可以利用多列索引,如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
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