我有疑问,如果我有3列(名字,姓氏,地址)作为字符串/varchar(255)表。
我有两个列的复合my_idx
CREATE INDEX my_idx ON my_table (firstname,lastname)如果我使用sql,它会使用我定义的索引吗?
select * from my_table where address="zzz" and firstname="xxxx" and lastname="yyyy"还是应该首先使用索引列作为最左边的条件?
select * from my_table where firstname="xxxx" and lastname="yyyy" and address="zzz" 谢谢
发布于 2017-12-14 07:19:10
首先:如果您在查询前面加上关键字"EXPLAIN“,它将打印出它可能使用的所有索引,以及MySQL选择的索引。据我所知,是的,它将使用索引。查询中字段的顺序与此无关。
重要的是索引中的顺序,但前提是您没有在查询中提供所有字段(或将函数应用于值或使用例如,对字符串的其余部分使用like操作符)。例如,如果只查询lastname,则无法使用索引。如果只查询firstname,则将使用索引。如果查询firstname和address,则将使用索引,等等.
https://stackoverflow.com/questions/47807646
复制相似问题