正如文檔所說,mysql不會分配您爲varchar指定的完整空間。它存儲實際的數據長度。所以我猜這裏可能還有副作用。就像一個varchar記錄的原始長度是10,現在我想將它更新爲20,但仍然沒有達到指定的限制50.但是,之前分配的空間是不夠的。 所以我的問題是MySQL如何處理這種情況?移動該記錄後的所有內容需要很長時間?還是它必須這樣做? 有沒有人可以告訴我它是如何在內部工作的?提前致謝!使用varchar(x)有什麼危害?
回答
MySQL處理得很好,你不應該關心細節。儘管長度不規則的記錄比固定長度的記錄管理起來要慢一些,但是如果記錄通常小於固定大小,那麼通過讀取顯着更少的數據會帶來巨大的性能提升。
請記住,CHAR
列總是以最大大小存儲和檢索。即使平均記錄只有10-15字節的數據,255個字符的字段也需要傳輸255個字節。這是相當大的開銷。
使用CHAR
提出了一系列其他問題,因爲該字段將始終爲該長度,這意味着它必須完整地傳輸並且通常在客戶端中被剝離。這比麻煩更麻煩。
CHAR
列在現代唯一使用的是用於總是定義的東西,並且將始終是一定的大小。一個例子可能是使用40個字符的十六進制編碼哈希值作爲標識符,但這些通常很少見,幾乎在所有情況下,VARCHAR
也可以工作。
我可以想到幾個可以使用'char'的例子 - 電話號碼,電話號碼,國家保險號碼等等。但對於大多數情況'varchar'更好。 – 2012-07-18 20:42:27
即使在國家內,郵政編碼的長度也會有很大差異,電話號碼可能會有擴展名,等等。如果你曾經敢於假設*某種特定的固定長度,你通常會感到驚訝。我希望你不是用'CHAR(5)'郵政編碼字段創建數據庫,因爲我之前就已經看到過,而且它已經超越了真氣。 – tadman 2012-07-19 11:27:08
- 1. 「無效實體」有什麼危害嗎?
- 2. 在MySQL中爲varchar選擇一個大值會有什麼危害嗎?
- 3. 忽略警告的危害是什麼?
- 4. 有一個很長的maxDelayTime有什麼危害?
- 5. 有很多枚舉值會有什麼危害嗎? (many> = 1000)
- 6. 讓git分支「變老」有什麼危害嗎?
- 7. 編譯boost時,定義BOOST_DISABLE_ABI_HEADERS會有什麼危害?
- 8. Objective-C中屬性覆蓋有什麼危害?
- 9. 字節碼操作的危害是什麼(如果有的話)?
- 10. 不應分配參數'foo' - 有什麼危害?
- 11. 使用32位MSI在64位Windows上安裝「AnyCPU」程序有什麼危害?
- 12. 管道的危害
- 13. MIPS結構危害
- 14. 使用svn有什麼危險?
- 15. 分享我的android應用程序的apk有什麼危害嗎?
- 16. 沒有虛擬方法的虛擬析構函數有什麼危害嗎?
- 17. 危害重載method_missing和method_added
- 18. 超正常化的危害?
- 19. 管道的危害問題
- 20. 動態SQL的危害是什麼,可以避免嗎?
- 21. 數組中的大量空值意味着什麼危害?
- 22. 管道常見的管道危害是什麼?
- 23. 當ACL已經到位時,給予網站充分信任有什麼危害?
- 24. 在線程局部字典中放入django請求對象有什麼危害?
- 25. 我是MySQL的新手,有什麼方法可以危害數據庫嗎?
- 26. Java程序終止時無法關閉文件會有什麼危害嗎?
- 27. 獲得ReCAPTCHA公鑰/私鑰時使用全局域有效性有什麼危害?
- 28. 什麼是使服務層中的靜態方法危害 - 春季3
- 29. 如果我們使用Android Views的私人訪問修飾符會有什麼危害嗎?
- 30. matlab中的經濟模型和危害損害
相信我,關於磁盤存儲優化,關係數據庫在過去的40年中走過了很長的路要走。不要爲了小東西而流汗。 – Olaf 2012-07-18 19:23:31