sql中外键约束是什么意思

说白了,外键约束就是数据库中的“联姻规则”,它确保一个表中的某个字段与另一个表中的主键“绑定”在一起,否则无法移动。
这种情况就复杂了,因为它不仅阻碍了数据的连接,而且也无法悄悄地更好地执行。

让我们谈谈第一件非常重要的事情。
去年我们跑一个电商项目的时候,当用户订单数据达到3 000QPS的时候,SNOW结果直接出现在表中,没有外键。
在底部,它被称为“风暴更新幻灯片”。
因为在一切事情之前都先搁置了一点犹豫不决的事情。
还有一点,去年1 0月,我们发现当主键列不指示父表时,插入外键数据会造成混乱——因为数据库首先要到父表中查找对应的,相当于每次插入都要在全表中查找。
另一个是决定性的。
当我们使用PostgreSQL时,我们发现在批量更新场景下检查外键会特别慢。
后来我们暂时禁用了约束,只是将数据移到了单元中,这样效果就加倍了。

一开始我也以为外键会减慢所有的写入操作,但后来我发现在优化课上表现得最明显——比如在相关题中,他们可以自动使用数据库键列作为外键索引,这比手动编写连接条件要容易得多。
等等,还有别的事。
不同的数据库对于外键“是否可以删除父表”的条件是不同的。
例如MySQL默认允许,但SQL Server需要手动添加DELETE CASCADE。

建议在设计新系统时,给相关性强的外表添加无关键,但要记得测试场景的批量操作——这往往是要检查的外键的“妖镜”。
你怎么认为?

sql中foreign key的用途 外键约束的实战应用与注意事项