在表的主键上有索引吗?
对于SQL Server,我相信从以前的问题是你正在使用的,当你定义一个PRIMARY KEY时,它会自动在该列上有一个索引,默认是一个CLUSTERED索引。您可以在创建约束时定义它是否应该是NONCLUSTERED或CLUSTERED索引。
OP的+1和FYI:虽然MySQL和SQL Server使用相同的术语,但索引不包含ANSI。 Oracle不区分 - 它们只是索引。同样重申:SQL Server - 在定义主键时默认创建聚集索引,但可以更改聚集索引以关联表中的其他列。 – 2010-02-01 20:36:18
这取决于数据库。
某些数据库要求或自动创建主键索引,以强制实现主键的唯一性。其他人非常乐意对桌面进行全面扫描。
您使用的是哪个数据库?
编辑:
- 的SQLServer(版本7 - 2008年)创建的索引或主键 - 你可以控制它是否是群集。
- 当您添加唯一键约束时,旧版本的Oracle(8i,9i)也会创建索引。根据我刚刚看过的测试案例,新版本(10g)似乎并不如此。
SQL Server 2008 – Shayan 2010-02-01 20:24:20
在任何“真实”数据库中,是的,主键意味着具有唯一索引。在一些数据库中,主键索引也可以集中在键值上。
在我用过的所有数据库中,PRIMARY KEY基本上只是一个UNIQUE索引。
我认为这基本上是正确的。所以+1来弥补无法解释的downvote :) – Andomar 2010-02-01 20:32:45
大声笑,谢谢Andomar! – 2010-02-02 00:41:15
哪个数据库服务器? – SLaks 2010-02-01 20:21:26
我使用SQL Server 2008 – Shayan 2010-02-01 20:24:02
请检查这篇文章http://stackoverflow.com/questions/462477/sql-primary-key-and-index – madatanic 2010-02-01 20:22:29