如上图User表,id为主键,name为普通字段。
如果将id和name设置为索引,id是主键索引,name为普通索引,也叫做辅助索引。他们之间有什么区别呢?
InnoDB 存储引擎情况下
在InnoDB存储引擎的B+树的数据结构下,主键索引下跟着的是数据信息,而辅助索引下跟着的是主键的id。
如图所示:
使用主键索引查询的时候,可直接取到数据。
使用主键索引查询的时候,要先得到主键索引值,再根据索引值去匹配数据。
MYISAM 存储引擎情况下
MYISAM 的索引是非聚集索引,索引信息和数据信息在不同的文件下,无论是主键索引还是辅助索引下跟着的都是数据的指引地址,根据数据的指引地址去数据信息文件搜索所需数据。