Ben*_*Lin 1 mysql indexing innodb
这个问题与 MySQL表需要一个ID有关吗?
有一个无意义的auto_incremental ID作为表的PRIMARY KEY,然后当我创建其他KEY时,我应该在KEY中包含这个ID吗?
例如,在此表中:
CREATE TABLE `location` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`country` varchar(50),
`states` varchar(50),
`city` varchar(50),
`county` varchar(50),
`zip` int(5),
PRIMARY KEY(ID),
KEY zip1 (zip),
KEY zip2 (zip, ID)
} ENGINE=InnoDB ;
Run Code Online (Sandbox Code Playgroud)
因为我需要使用邮政编码搜索表格,所以我需要一个从邮政编码开始的KEY.我应该使用KEY zip1或KEY zip2.这两个KEY中哪一个更好?
对于InnoDB,主键始终包含在二级索引中 ;
除聚簇索引之外的所有索引都称为辅助索引.在InnoDB中,辅助索引中的每条记录都包含该行的主键列以及为辅助索引指定的列.InnoDB使用此主键值来搜索聚簇索引中的行.
换句话说,ID已经包含在内zip1,并且不必像它一样被提及zip2.