Mysql
多餘的未使用的列對將來有幫助嗎?
目前,在創建表時,我們創建了 4 到 5 個額外的列,其臨時名稱如 c0、c1、c2 等,以供以後需要時使用,預設情況下保留為 NULL。
這樣我們就不必在需要時創建額外的列。我們只是重命名一開始創建的臨時列。
我想知道這種方法是否好。此外,如果創建新列與重命名舊列,性能差異是什麼。
我不會說這是一種好的做法,從長遠來看,這會導致團隊新成員的混亂。例如,人們將始終必須檢查其他人尚未使用但未重命名的列。如果有人忘記重命名並填充列,重命名將破壞引用列的現有過程。
另外,你怎麼知道你將來需要什麼值類型?這也需要改變。
添加新列不是問題,我經常使用包含數百萬行的數十個大表來執行此操作。本質上,在 dB 引擎中做了一個註釋,說明插入的新行具有這個新列,因此需要將該列的值儲存在幕後的頁面上。
- 4個或5個就夠了嗎?
- 你會選擇正確的數據類型嗎?
- 索引呢?
底線——額外的列幾乎總是比好處更多的麻煩和混亂。
當然
ALTER TABLE .. ADD COLUMN ..
要花一些錢,但通常是值得的。另一種方法……建立一個“平行”表;相同
PRIMARY KEY
,但使用新列。這本質上是“免費的”,但有以下缺點:
- 程式碼更改——一些查詢現在需要對
JOIN
新表進行。(或LEFT JOIN
)- 與列在同一個表中的情況相比,對兩個表進行過濾的效率可能要低得多。
我給出的建議: 計劃在幾個月後重新考慮整個架構。把目前時間作為一個延長的原型,然後硬著頭皮添加額外的列、複合索引、新表等,從長遠來看會更令人滿意。