我是不是需要为关系数据库表的主键创建单独的索引

Posted

技术标签:

【中文标题】我是不是需要为关系数据库表的主键创建单独的索引【英文标题】:Do I need to create separate index for primary key of relational database table我是否需要为关系数据库表的主键创建单独的索引 【发布时间】:2013-01-16 17:57:59 【问题描述】:

如果我用主键创建表是自动为表创建索引还是需要单独做。

即如果这是表 ddl

 CREATE TABLE release(guid varchar(36) NOT NULL PRIMARY KEY,
name varchar(255),xmldata  CLOB(512 K))

我也需要做吗

CREATE INDEX release_idx ON release(guid)

还是不

(我用的是Java自带的Derby数据库)

【问题讨论】:

这一切都记录在手册中:db.apache.org/derby/docs/10.9/ref/…(参见“支持索引”部分) 【参考方案1】:

你不需要。主键已经是一个索引。

【讨论】:

很高兴我这么认为,但不确定 @Jon 出于好奇,如果我们在主键上再次建立索引,查询的性能会提高吗? PRIMARY KEY 也是UNIQUE mysql 中。 @RickJames PRIMARY KEY 的定义必须是唯一的。不仅在 MySQL 中,而且在每个 rdbms 中 抱歉学究气,但是主键是约束,不是索引。

以上是关于我是不是需要为关系数据库表的主键创建单独的索引的主要内容,如果未能解决你的问题,请参考以下文章

怎样查看mysql数据库中表的关系?表的主键关联 父子关系怎?

键,索引,关系

ejb3:用简单的主键映射多对多关系

SQL中的ON DUPLICATE KEY UPDATE使用详解

Sqlserver 关系 索引 约束,如图,这些都啥用?大师。

使用 ObjectContext 获取关系记录的主键