3

外鍵僅用於確保數據庫的一致性,還是會影響性能(例如在執行連接時)和/或存儲效率(例如,僅使用外部表索引等)?外鍵是否會影響性能/存儲效率?

如果您一般回答或如果您想到特定數據庫解決方案(MySQL,PostgresQL,Oracle,...),請務必提及。

回答

4

外鍵本身就是關於數據一致性 - 僅此而已。

當然,插入和更新會帶來性能上的影響,因爲需要檢查值,但這些影響性能的因素是由其他因素決定的。

一般而言,您應該在主鍵和外鍵列上有索引 - 這是確保連接使用索引並且速度很快(並且索引確實影響存儲 - 它們需要存儲在某處的最佳方法,畢竟)。

對於幾乎所有的現代RDBMS都是如此。

+0

此外,你還必須確保索引被使用,例如運行查詢的解釋。有時你會驚訝它沒有在你期望的時候被使用。不會給你的小測試數據庫中的問題,但它會在生產中。 –

+0

那麼在第二段中,你會說對性能有負面影響?因爲我也在想是否會有積極的影響。請編輯您的答案以清楚說明。謝謝! – TMS

+1

@Tomas - 你的問題是面向性能。在這方面,擁有外鍵沒有好處。他們的好處是確保數據模型內的一致性。 – Oded

相關問題