日期:2014-05-16  浏览次数:20578 次

外键上建立索引的好处

外键上建立索引的好处

 

在主从表设计中,常常使用外键在这两个表之间建立关联。当从主表中删除一行数据时,SQL Server便会检查从表中是否有相同外键的行存在。如果从表没有包含外键列的索引,SQL SERVER需要扫描整个从表。可以想象:从表越大,删除的时间越长。更新主表时的情况也是一样。

 

INSERT

DELETE

UPDATE

主表(被引用表)

不作检查

检查从表是否有该键值的引用

检查从表是否有旧键值的引用

 因为主表有唯一聚集或非聚集的索引,所以在从表中插入或修改时,能利用主表的索引快速定位。

 下面来举例说明:

先创建两个表:主表ta(col1, col2),从表tb(col3, col4, col5),tb表的col4列引用ta表的col1列。先不要再col4上创建索引。

if object_id('tb')isnot null

drop tabletb

go

if object_id('ta')isnot null

drop tableta

go

create tableta(col1intprimary key,col2 char(2000))

go

 createtabletb(col3intprimary key,col4 int