如果我想使用外键,索引会很慢吗?
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,衡量维护成本是否可以证明您在这些操作上获得的加速(根据经验,通常是这样)。
我想使用外键,但我应该添加 index.I 听说索引插入速度很慢,这确实是个大问题,因为 table 我需要添加外键的角色有一个很多更新,插入,delete.Should 我使用外键?我不想减慢我的查询速度
让我解释一下 SQL 索引和引用
的实际整个概念- 当我们寻找特定的内容时,索引与我们书籍中的正常索引相同 page/content/topic 而不是一页一页地引用我们在索引中看到的页面并找出它的地址。
- references 用于维护特定 table 或列 之间的关系
- 当您执行任何操作时 SQL 如何准确工作 [不包括插入] 他们首先要搜索这些数据。首先它将检查索引[如果可用],否则逐行搜索数据。
- 所以如果你有一个索引,你可以使所有操作更快[你必须在你正在执行大部分操作的基础上对那些列进行索引,比如 ID,..] -如果有关系,你也可以在你的代码中维护[只有当你对数据库及其流程有深入了解时才选择此选项]
建议 必须[仅在一个字段上]使用索引,并且是根据您的需要使用关系,它永远不会降低您的性能
在以下情况下使用外键索引:
- 即将删除父行,
- 即将修改父键(被外键引用)。
(不用于插入或更新父级的非引用字段,也不是用于插入、更新或删除子级。)
当然,外键查询(尤其是 JOIN)"on top" 很常见,它们 也可能 从此类索引中受益。
因此,根据经验,如果您经常进行上述操作,请考虑在外键上建立索引。并且由于每个索引都需要 maintenance,衡量维护成本是否可以证明您在这些操作上获得的加速(根据经验,通常是这样)。