如果 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 表上添加索引?的主要内容,如果未能解决你的问题,请参考以下文章

mysql 索引2

在asp.net MVC3中怎么为一个实体类的ID属性设置为自动增长呢?此时ID不是主键,Code才是主键?如下

关系数据库(MySQL)的规范化以及设计原则

如何在数据库C#中查找表的主键

sqlserver 2008中的表,id列是不重复的主键,除id列,其他列出现重复数据,怎么去除重复???

当主键列是mysql中不同表的外键时,如何将主键列更改为自动递增