2012-06-22 81 views
0

我正在使用一個相當古老的使用MySQL作爲數據庫的Web應用程序。 90%的表是MyISAM,大部分它們的外鍵沒有索引。添加沒有外鍵約束的索引性能提升

我正在考慮將整個事情移植到InnoDB,所以我可以應用外鍵約束等。然而,由於該應用程序比較陳舊,有點匪夷所思,它一直依靠代碼來強制引用完整性,我擔心在數據庫中進行這種更改可能會導致多次代碼失敗。我沒有時間去瀏覽整個代碼庫,並確保一切都按照它的設想進行,我沒有理由懷疑它不是我只意識到添加引起意外的外鍵約束的可能性的問題。

我在想另一種方法可以是簡單地在外鍵字段上添加索引而不創建約束。我認爲這會提高性能,而不會損害現有功能。有誰能告訴我是否有理由不這樣做?我會因爲添加索引和外鍵約束而獲得相同的性能提升嗎?

+1

mysql已經在外鍵字段上自動創建索引。你只是雙重索引。 –

回答

1

是的,只是加上指標應該會給你幾乎相同的性能提升。外鍵約束更多的是參照完整性而不是性能。

在某些情況下,添加這些約束可以幫助數據庫引擎構建更高效的執行計劃;但這是一個小問題,與將無目標指標添加到無索引數據庫的好處相比。