我需要知道在索引
中最左边的列很重要我的表包含以下字段
id (int Primary key)
first_name(varchar(50))
last_name varchar(50)
我的索引是
Create index ix_name_1 on name(last_name,first_name)
查询
当我运行以下查询时,它采用正确的索引
Select *
from name
where first_name = 'firstName' and last_name ='lastName'
或
select *
from name
where last_name = 'lastName' and first_name = 'firstName'
但是当我跑步时
Select * from name where first_name = 'firstName'
它进入表扫描。
在我发现的事情上,last_name是最左边的列,我尝试了同一个不同的表和不同的查询,错过了where子句中最左边的列发生了同样的事情。
所以我需要知道索引
中最左边的列问题答案 0 :(得分:1)
是的,索引中最左边的列确实很重要,请参考:
http://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html
据说:
名称索引是last_name和first_name列的索引。 该索引可用于在指定a中的值的查询中进行查找 last_name和first_name值组合的已知范围。它 也可以用于仅指定last_name值的查询 因为该列是索引的最左前缀(如上所述) 本节稍后部分)。因此,名称索引用于查找 在以下查询中:...