3
外鍵僅用於確保數據庫的一致性,還是會影響性能(例如在執行連接時)和/或存儲效率(例如,僅使用外部表索引等)?外鍵是否會影響性能/存儲效率?
如果您一般回答或如果您想到特定數據庫解決方案(MySQL,PostgresQL,Oracle,...),請務必提及。
外鍵僅用於確保數據庫的一致性,還是會影響性能(例如在執行連接時)和/或存儲效率(例如,僅使用外部表索引等)?外鍵是否會影響性能/存儲效率?
如果您一般回答或如果您想到特定數據庫解決方案(MySQL,PostgresQL,Oracle,...),請務必提及。
外鍵本身就是關於數據一致性 - 僅此而已。
當然,插入和更新會帶來性能上的影響,因爲需要檢查值,但這些影響性能的因素是由其他因素決定的。
一般而言,您應該在主鍵和外鍵列上有索引 - 這是確保連接使用索引並且速度很快(並且索引確實影響存儲 - 它們需要存儲在某處的最佳方法,畢竟)。
對於幾乎所有的現代RDBMS都是如此。
此外,你還必須確保索引被使用,例如運行查詢的解釋。有時你會驚訝它沒有在你期望的時候被使用。不會給你的小測試數據庫中的問題,但它會在生產中。 –
那麼在第二段中,你會說對性能有負面影響?因爲我也在想是否會有積極的影響。請編輯您的答案以清楚說明。謝謝! – TMS
@Tomas - 你的問題是面向性能。在這方面,擁有外鍵沒有好處。他們的好處是確保數據模型內的一致性。 – Oded