表的主键上是否有索引?

时间:2010-02-01 20:20:10

标签: sql database sql-server-2008 primary-key indexing

拥有主键列是否意味着该列上有索引?如果是这样,它是什么样的指数?

5 个答案:

答案 0 :(得分:7)

对于SQL Server,我相信你以前的问题是你正在使用的,当你定义一个PRIMARY KEY时,它会自动在该列上有一个索引,它将默认为CLUSTERED索引。您可以在创建约束时定义它应该是NONCLUSTERED还是CLUSTERED索引。

答案 1 :(得分:4)

是的,主键意味着索引。

如果主键是群集的,则索引将成为主表文件的一部分。它不是聚集的,它将成为单独索引文件的一部分。

答案 2 :(得分:2)

这取决于数据库。

某些数据库需要或自动创建主键索引,以强制实施主键的唯一性。其他人非常乐意对桌子进行全面扫描。

您使用的是哪个数据库?

编辑:

  • SQLServer(版本7 - 2008)创建索引或主键 - 您可以控制它是否已群集。
  • 旧版本的Oracle(8i,9i)在添加唯一键约束时也会创建索引。根据我刚看过的测试用例,似乎没有更新的版本(10g)。

答案 3 :(得分:1)

在任何“真实”数据库中,有主键意味着具有唯一索引。在某些数据库中,主键索引也可以/将在键值上聚类。

答案 4 :(得分:1)

在我使用的所有数据库中,PRIMARY KEY基本上只是一个独特的索引。