如果使用外键后,mysql需要额外的开销来检测数据的完整性和一致性检测,容易造成死锁,mysql处理性能势必会下降。
如果对数据的要求不是那么严格, 建议不要使用外键约束,如果一定要保证完整性,可通过其他方法实现,如实体完整性通过逐渐或唯一索引来实现,域的完整性通过限制列的数据类型、格式或值的范围来实现,参照完整性可通过编写触发器来实现或者通过代码的逻辑判断来实现。
表的关联,只是一种逻辑概念,本并不需要进行物理上的“硬绑定”,而且你所期望的关联,只是其数据上存在一定的联系而已,这种联系实际上是设计之初就定义好的固有逻辑。所以在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来“存/取”数据即可,并不需要在数据库层面进行“硬绑定”
因为在数据库层面通过使用外键的方式进行“硬绑定”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不需要这个校验。
所以一般不建议在数据库中使用外键约束来保证数据的一致性和完整性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)