【发布时间】:2016-09-08 10:46:21
【问题描述】:
一位同事声称他过去使用外键优化查询。我认为只有在表中插入或更新数据时才使用外键。我不明白如何使用它们来加快搜索速度。
在创建执行计划时,外键如何提供帮助?我错过了什么吗?如果有,那在什么情况下有帮助?
(我们使用 PostgreSQL,我没有太多经验。它的行为是否可能与 Oracle 或 MySQL 不同?)
【问题讨论】:
-
在 PostgreSQL 上,至少一个外键不会提高性能,你是对的,它只是简单地检查 INSERT、UPDATE、DELETE 或 TRUNCATE。但不要更改 SELECT。
-
索引将提高父表上 DELETE 语句的性能,因为数据库需要检查是否没有更多的子行 - 如果 FK 列被索引,检查会更快跨度>
-
我不了解 PostgreSQL,但我知道它有助于例如微软SQL。即使现在没有帮助,但将来可能会因为程序(特别是优化器/规划器)仍在积极开发中。
-
这能回答你的问题吗? Does Foreign Key improve query performance?
-
@philipxy 这是 Microsoft SQL Server 的一个类似问题,而我对 PostgreSQL 很感兴趣。不同的数据库系统有时会以不同的方式运行。
标签: postgresql indexing foreign-keys query-optimization