Mysql
向大型 MySQL 表添加保留欄位是個好主意嗎?
您可能知道向具有數百萬條記錄的 MySQL 表添加新列是困難的,在某些情況下是不可能的。
為每個表(例如元)添加一個文本列以在將來避免一些頭痛是個好主意嗎?當然,在大多數情況下它們是空的。
這些數據可以儲存為 JSON。我知道這個欄位不容易訪問,但它可以避免另一個加入,這對於這個性能敏感的應用程序很重要。
它使用 InnoDB。
我同意“糟糕的形式”。
計劃A:
當您確實需要添加另一列時,這是另一種方法。
使用相同的 PRIMARY KEY(“垂直分區”)創建一個新表。(但不是 AUTO_INCREMENT。)將新列放入其中。獲取新數據的 JOIN 將在您的程式碼中變得混亂,但只有在您真正需要這些新列時才會如此。
此外,將其設為 LEFT JOIN,以便在沒有列數據的情況下,新表中的行可能會失去。(此建議適用於“稀疏”資訊。)垂直分區和 LEFT JOIN 對於“叢”中出現的稀疏屬性通常是一個好主意。
B計劃:
詳細說明 JSON 建議 - 有一個 TEXT 欄位,其中包含您不需要 MySQL 來查看或執行 WHERE 或 ORDER BY 的任何欄位(現有或新)的鍵值對。只需讓應用程序看到它們。
更好的是,在應用程序中壓縮 JSON 並將其儲存在 BLOB 中——這將使其小 3 倍。