Mysql

多餘的未使用的列對將來有幫助嗎?

  • February 2, 2022

目前,在創建表時,我們創建了 4 到 5 個額外的列,其臨時名稱如 c0、c1、c2 等,以供以後需要時使用,預設情況下保留為 NULL。

這樣我們就不必在需要時創建額外的列。我們只是重命名一開始創建的臨時列。

我想知道這種方法是否好。此外,如果創建新列與重命名舊列,性能差異是什麼。

我不會說這是一種好的做法,從長遠來看,這會導致團隊新成員的混亂。例如,人們將始終必須檢查其他人尚未使用但未重命名的列。如果有人忘記重命名並填充列,重命名將破壞引用列的現有過程。

另外,你怎麼知道你將來需要什麼值類型?這也需要改變。

添加新列不是問題,我經常使用包含數百萬行的數十個大表來執行此操作。本質上,在 dB 引擎中做了一個註釋,說明插入的新行具有這個新列,因此需要將該列的值儲存在幕後的頁面上。

  • 4個或5個就夠了嗎?
  • 你會選擇正確的數據類型嗎?
  • 索引呢?

底線——額外的列幾乎總是比好處更多的麻煩和混亂。

當然ALTER TABLE .. ADD COLUMN ..要花一些錢,但通常是值得的。

另一種方法……建立一個“平行”表;相同PRIMARY KEY,但使用新列。這本質上是“免費的”,但有以下缺點:

  • 程式碼更改——一些查詢現在需要對JOIN新表進行。(或LEFT JOIN
  • 與列在同一個表中的情況相比,對兩個表進行過濾的效率可能要低得多。

我給出的建議: 計劃在幾個月後重新考慮整個架構。把目前時間作為一個延長的原型,然後硬著頭皮添加額外的列、複合索引、新表等,從長遠來看會更令人滿意。

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