数据库外键的使用以及优缺点

qytomorrow 2016-06-14 09:34:33
现在在开发的一个系统,数据库设计之时没有考虑太多的性能问题,设置了很多外键。
看网上很多资料表示,设置外键在进行增删改操作的时候,会出现表与表之间的耦合,所以很多时候系统内存会升到好几个G。
外键到底应不应该使用,或者在什么情况下可以使用在什么情况下不建议使用。
...全文
2937 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
转身@未来 2016-06-14
  • 打赏
  • 举报
回复
我个人觉得数据库表外键使用是很有用的,首先保证了数据的完整性,但是最重要的是要合理的使用外键,过多的使用外键虽然增加了查询效率,降低了插入、更新,删除的效率。创建外键之前首先要考虑到该表以后读写情况,然后合理的创建外键。
kingtiy 2016-06-14
  • 打赏
  • 举报
回复
说两点吧. 外键,主要保证了数据完整性.建议是使用的. 但如果大量导数据,或者删除数据的时候,建议先禁用外键约束,等维护完成,再启用约束.
中国风 2016-06-14
  • 打赏
  • 举报
回复
如果是用外健的no action 选项,检查影响是一定,花销成本可以忽略不计,不会出现什么并发之类的 并发只会用到级联的更新和删除时会可以会存在,事务要尽量控制代码短,花销时间少
zbdzjx 2016-06-14
  • 打赏
  • 举报
回复
个人感觉:外键会影响性能,但是,很小,除非数据量很大,并发量很大,才可能有明显的影响。不然,外键的优点要明显高于缺点。
misterliwei 2016-06-14
  • 打赏
  • 举报
回复
使用外键主要是让SQL SERVER数据库系统来自动保证数据的完整性;缺点是对主表和从表的增删改性能会有影响。 可以通过事务来人工实现数据的完整性,但是需要做大量的测试,就怕万一有遗漏的情况。
中国风 2016-06-14
  • 打赏
  • 举报
回复
除非你的外健用了级联更新或删除时会有影响
中国风 2016-06-14
  • 打赏
  • 举报
回复
外健是数据库为了数据的完整性,安全防护,你的内存升得快同这个没关,估计是设计出了问题 比如:用到复合主健(2列以上建的主健),引用时被其它表引用 系统设计时会用到XML或表类型作为接口参数时,最好别用外健不便于维护,把约束交给程序去处理
卖水果的net 2016-06-14
  • 打赏
  • 举报
回复
使用外键的好处多多:1保证数据的完整性,2.关联查询时,可以用到FK 的统计信息 不使用外键的好处多多:1.删队或更新关联数据时不用做检查,效率会大符提高,2.手工调数据时,比较方便(一般不建议) 这个一定要权衡,权衡,权衡!
薛定谔的DBA 2016-06-14
  • 打赏
  • 举报
回复
外键虽然保证完整性,但是对于主表删除这种操作,都级联扫描一遍所有的子表取删除,数据越大越慢,锁粒度也会大。维护也麻烦,对于手动增删数据的维护,导入导出,其它高可用等,太麻烦。 还是用程序修改用事务来保证吧!~

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧