如果 ID 列是主键,我是不是需要在 mySQL 表上添加索引?
Posted
技术标签:
【中文标题】如果 ID 列是主键,我是不是需要在 mySQL 表上添加索引?【英文标题】:Do I need to add an index on a mySQL table if the ID column is the primary key?如果 ID 列是主键,我是否需要在 mySQL 表上添加索引? 【发布时间】:2013-01-28 20:50:37 【问题描述】:我在 mysql 中有一个表,其中 'id' 列是主键:
CREATE TABLE `USERS` (
`ID` mediumint(9) NOT NULL auto_increment,
.....
PRIMARY KEY (`ID`),
KEY `id_index` (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=267 DEFAULT CHARSET=latin1;
我还添加了如下索引:
CREATE INDEX id_index ON USERS (id);
我需要这样做吗?还是主键自动索引?
这里的最终目的是加快加入表 USERS 的 id 列的查询。
谢谢
【问题讨论】:
Indexes on primary and foreign keys 的可能重复项。我对此做了一些测试。 【参考方案1】:默认情况下,主键就像 INDEX KEY 一样工作。 您不需要创建它来索引键。
【讨论】:
【参考方案2】:不,你不需要这样做。
主键被自动索引。您需要的是索引其他表中的外键列。
【讨论】:
MySQL 会自动创建索引even for foreign keys.【参考方案3】:您不需要为 PK 添加额外的索引。
Using Primary Keys
【讨论】:
以上是关于如果 ID 列是主键,我是不是需要在 mySQL 表上添加索引?的主要内容,如果未能解决你的问题,请参考以下文章
在asp.net MVC3中怎么为一个实体类的ID属性设置为自动增长呢?此时ID不是主键,Code才是主键?如下