132
|
Chaowlert Chaisrichalermpol · 技术社区 · 15 年前 |
1
198
|
2
64
外键可以提高(并损害)性能
因为链接现在似乎已经死了 (感谢克里斯的关注) ,下面显示外键可以提高(并损害)性能的要点。 Can Foreign key improve performance
|
3
17
外键是确保数据库完整性的DBMS概念。 任何性能影响/改进都将特定于所使用的数据库技术,并且与外键的用途相比是次要的。 在SQL Server中,确保所有外键上至少有一个非聚集索引是一种很好的做法。 我希望这为你澄清了一切,但请随时要求更多的细节。 |
4
3
最好的性能选择是在经常使用的字段上使用索引。如果使用SQL Server,则可以使用探查器评测特定数据库,获取输出的文件,并使用“调优向导”接收有关索引放置位置的建议。我还喜欢使用分析器清除长时间运行的存储过程,我每周都会发布十大最糟糕的违规者名单,让人们保持诚实:D。 |
5
3
您可以使用它来帮助提高查询效率。它确实允许您在SQL Server中重新构造查询,以使用外部联接而不是内部联接,这将使SQL Server无需检查列中是否有null。您不需要输入那个限定符,因为外键关系已经为您提供了信息。 因此:
变成这样:
这不一定会在小查询中产生巨大的性能,但当表变大时,它会更有效。 |
6
2
|
7
2
在表中添加外键不会提高性能,简单地说,如果在ProductCategories表数据库中插入记录,将尝试查找外键列的值,该值存在于products表的主键值中,每次在ProductCategories表中添加新条目时,操作都会增加数据库的开销。 因此,通过添加外键不会提高数据库性能,但会考虑数据库的完整性。 |
8
2
对于MySQL5.7来说,它绝对可以很好地加速涉及多个连接的查询! 我使用“explain”来理解我的查询,发现我加入了4-5个表,其中根本没有使用键。我只向这些表添加了一个外键,结果是加载时间减少了90%。花费了>5秒现在需要500毫秒或更短时间。
而且,正如其他人所提到的,您还可以获得确保关系完整性的额外好处。 除此之外,确保引用完整性也有其自身的性能优势。它具有确保具有外键的表与外键表“最新”的二阶效果。假设您有一个users表和一个comments表,并且您正在comments表上进行一些统计。可能如果你硬删除用户,你也不再需要他们的评论了。 |
10
0
是的,FK可以加速
约束条件(包括FK),以建立更好的执行计划
例如,如果使用
"untrusted" state ,但这是一个完全不同的故事。
|
ecology · 基于R中随机生成数集的子集列 2 年前 |
Krischk · 使用python;获取列表中错误项的索引[已关闭] 2 年前 |
Mohona · 对一维数组元素的迭代在几次迭代后给出了索引错误 2 年前 |
X3VI · 熊猫-重命名_轴后无法按预期工作-为什么? 2 年前 |
dam · 为什么这是我使用索引的输出?什么是索引?[闭门] 2 年前 |
Sahil Panhalkar · 显示索引超出范围的列表更新语句 2 年前 |
SpaceBallz · 比较嵌套列表中的值 2 年前 |
startresse · 自定义type\u索引顺序,无boost 2 年前 |