Mysql

將外鍵添加到 1M 行表的性能影響

  • October 2, 2018

我有一個執行 MariaDB + InnoDB 的電子商務數據庫,它有一個儲存交易 (T) 的表和另一個儲存報價 (Q) 的表。

我想通過在引用 Q 的 T 上添加外鍵來建立 T 和 Q 之間的連接。

考慮到 Q 有超過 100 萬行(不斷增長)和 T 大約 100k,您認為在 T 表中添加外鍵到 Q 會在日常操作中造成顯著的性能影響嗎?另一種方法是添加一個沒有外鍵的簡單 INT 列。或其他任何事情,我願意接受建議:)

詳情:

  • T 大約有 20 行,主要是 (SHORT) INTEGERs、一些其他外鍵和幾個 DateTime 欄位
  • Q 有 2 個 SHORTINT 欄位和幾個 VARCHAR 欄位(每個 255b)。

提前感謝您的見解。

如果您的數據需要,您最好維護外鍵 (FK) 約束。

MySQL 會自動創建一個索引——FK 必須引用一個 UNIQUE KEY(顯然,可以是 PRIMARY KEY (PK)——來自這裡)。

請參閱此處,了解為什麼在數據庫中應用數據約束是一個非常好的主意。T 表上的索引將以少量插入為代價來提高查找速度。

相信我,通過使用數據庫功能而不是自己嘗試這樣做,您會為自己省去巨大的痛苦。

引用自:https://dba.stackexchange.com/questions/105469