SQL2005外键带有索引吗??我还需要在外键上面建索引吗?

来源:互联网 发布:淘宝删除代发货的 编辑:程序博客网 时间:2024/05/30 04:40

建立外键不像建立主键那样默认有一个聚集索引,需要手工增加在外键上的索引。

如:

SQL code
Use testGoIf Object_id('TableB','U') Is Not Null Drop Table TableBGoIf Object_id('TableA','U') Is Not Null Drop Table TableAGoCreate Table TableA( ID int Identity(1,1) Not null, x int , Constraint PK_TableA_ID Primary Key(ID Asc))GoCreate Table TableB( ID int Identity(1,1) Not null, A_ID int Not null, x int , Constraint PK_TableB_ID Primary Key(ID Asc), Constraint FK_TableB_A_ID Foreign Key(A_ID) References TableA(ID))Go--查询索引:Select name From Sys.indexes Where object_id In(object_id('TableA'),object_id('TableB'))/*name--------------------PK_TableA_IDPK_TableB_ID*/--手工增加对外键的索引Create Nonclustered Index IX_TableB_A_ID On TableB(A_ID Asc)Go--查询索引:Select name From Sys.indexes Where object_id In(object_id('TableA'),object_id('TableB'))/*name--------------------------PK_TableA_IDPK_TableB_IDIX_TableB_A_ID*/
外键除了为了实体完整性意外,它一般还是另一个表的主键,主键是索引。
所以含有外键的表连接的时候会用到索引(外键的主表的)比较快
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。当创建或修改表时可通过定义 FOREIGN KEY 约束来创建外键。

在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两表之间创建了链接。这个列就成为第二个表的外键