最左边的列在MySQL中的索引中是否重要?

时间:2016-10-18 11:37:41

标签: mysql sql database

我需要知道在索引

中最左边的列很重要

我的表包含以下字段

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子句中最左边的列发生了同样的事情。

所以我需要知道索引

中最左边的列问题

1 个答案:

答案 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值的查询   因为该列是索引的最左前缀(如上所述)   本节稍后部分)。因此,名称索引用于查找   在以下查询中:...