如果我想使用外键,索引会很慢吗?

Is indexes slow if I want to use foreign key?

我想使用外键,但我应该添加 index.I 听说索引插入速度很慢,这确实是个大问题,因为 table 我需要添加外键的角色有一个很多更新,插入,delete.Should 我使用外键?我不想减慢我的查询速度

让我解释一下 SQL 索引和引用

的实际整个概念
  • 当我们寻找特定的内容时,索引与我们书籍中的正常索引相同 page/content/topic 而不是一页一页地引用我们在索引中看到的页面并找出它的地址。
  • references 用于维护特定 table 或列
  • 之间的关系
  • 当您执行任何操作时 SQL 如何准确工作 [不包括插入] 他们首先要搜索这些数据。首先它将检查索引[如果可用],否则逐行搜索数据。
  • 所以如果你有一个索引,你可以使所有操作更快[你必须在你正在执行大部分操作的基础上对那些列进行索引,比如 ID,..] -如果有关系,你也可以在你的代码中维护[只有当你对数据库及其流程有深入了解时才选择此选项]

建议 必须[仅在一个字段上]使用索引,并且是根据您的需要使用关系,它永远不会降低您的性能

在以下情况下使用外键索引:

  • 即将删除父行,
  • 即将修改父键(被外键引用)。

用于插入或更新父级的非引用字段,也不是用于插入、更新或删除子级。)

当然,外键查询(尤其是 JOIN)"on top" 很常见,它们 也可能 从此类索引中受益。

因此,根据经验,如果您经常进行上述操作,请考虑在外键上建立索引。并且由于每个索引都需要 maintenance,衡量维护成本是否可以证明您在这些操作上获得的加速(根据经验,通常是这样)。