读书频道 > 网站 > 网页设计 > SQL Server性能调优实战
2.4.2 约束对性能的影响
15-11-02    下载编辑
收藏    我要投稿   

本文所属图书 > SQL Server性能调优实战

本书是一线DBA技术专家精心之作,积作者多年的经验结晶和最佳实践,也是目前市场上为数不多通过存储原理来讲解性能优化,剖析SQL Server架构,从而帮助读者快速高效调优数据库的图书。书中首先简要介绍了SQL S立即去当当网订购

SQL Server提供的约束类型分别为默认值约束、Check约束、唯一约束和外键约束。接下来详细介绍它们对性能的影响。

1.默认值约束

在新增数据时,若没有指定字段的值,则使用默认值约束中的定义自动填充数值。默认值约束只在新增数据时才会被调用,且它只会影响新增的行,对数据库引擎来说,它的影响几乎可以忽略不计。

2.Check约束

在新增或修改数据时,会先判断新值是否符合Check约束的定义,若不符合则返回相应的警告信息。Check约束可以指定一些较为复杂的表达式,在指定Check约束时,应使逻辑尽量简单。Check约束的引入,相当于告诉查询优化器:“这个字段的值只有某些枚举值”。例如,“性别”字段,其约束只允许字段值有“Male”和“Female”两种值,当查询语句通过这个字段查找“Male”或“Female”时,就直接返回空数据,而不再对数据进行大量的检索操作,因为约束告诉查询优化器,过滤的这两个值“Male”与“Female”是不存在的。

3.唯一约束

创建一个唯一约束会默认创建一个唯一索引,它在校验的过程中,是利用索引的树结构来检索的,在数据更新的时候会有一定的开销,不过这个开销非常小,也可以忽略。同时,唯一索引是筛选率非常高的一种索引结构,对于查询优化有极大的帮助。通常在一个表中,无论是无意义的自增值,还是有意义的业务字段,至少应该有一个唯一约束存在。

4.外键约束

外键约束为了保证主、子表数据的完整性,在子表进行增、删、改等操作的时候,会同时校验主表的数据是否完整。这个过程中,会对主表加锁进行查询,这时主表的关联字段一定是主键或唯一键,它的校验速度非常快,不会有太大的问题。当子表进行删除操作的时候,外键约束会去校验子表的关联字段是否存在。此时,如果子表的关联字段没有索引,将会扫描整个子表,那会使开销剧增(如果子表非常大)。所以在添加外键关联的时候,需要同时检查子表中的关联字段是否有索引,如果没有,请手工创建它(有部分网友误以为SQL Server会自动创建索引,其实是不会的)。在某些情况下,比如子表是日志表或历史表,对于数据完整性并没有要求,此时请不要在上面加外键约束,因为这只会给系统带来额外的消耗。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站