日期:2014-05-16 浏览次数:20598 次
外键上建立索引的好处
在主从表设计中,常常使用外键在这两个表之间建立关联。当从主表中删除一行数据时,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
|