gpt4 book ai didi

mysql - 如果我在没有在 MySQL 中定义外键的情况下对数据库进行建模会怎样?

转载 作者:行者123 更新时间:2023-11-29 10:53:58 25 4
gpt4 key购买 nike

场景 1:外键定义正确

场景2:在删除和更新记录时,我可以确保在编写API时不会留下任何孤立数据,而无需定义任何FK。另外,我将在插入时检查数据完整性

那么这两种情况有什么区别呢?我只是想知道使用FK(定量分析)会给我带来什么好处。我在场景 1 中会获得比场景 2 更好的性能吗?我是 MySQL 数据库设计的新手。

最佳答案

性能差异...

FK 检查必须进入另一个表(通过索引)来进行完整性检查。然而...

情况1:简单FK:

在许多情况下,您可以通过了解应用代码的流程来确保“不会”发生某些 FK 违规。例如,当您插入一行中的两个表时(并且您已经检查了错误等),并且第二个表指向您刚刚插入的第一个表的行,那么 FK 测试是多余的并且会损害性能(a很少)。

另一方面,如果您通过执行额外的 SELECT 操作来“模拟”FK 检查,那么性能将会受到明显影响。

情况2:FK级联删除:

如果您使用 FK 进行“级联删除”(等),那么这可能比手动执行删除更有效。

此外,如果您可以批量删除删除,它可能比让级联逐一执行它们要快。

另一条评论:“副作用”,例如“级联”,被(某些人)认为是一种顽皮的编码实践。

但是...上述差异可能不足以对您的应用产生影响。

关于mysql - 如果我在没有在 MySQL 中定义外键的情况下对数据库进行建模会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43302633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com