昨天推送的MySQL設計規範,本來有一條是關于字元集建議的,最終我給去掉了。說的是用單位元組的latin1存儲gbk\utf8\utf8mb4等多位元組資料,這種情況下,如果存儲的是ASCII字元,是可以節省存儲空間的,但如果存儲的是多位元組字元,存儲空間則無法節省。經過測試,如果隻是資料存取,那麼是完全OK的,但如果涉及到字元串排序,或者字元串等值查詢時,得到的結果有可能不是預期那樣的。是以,建議還是用相應的恰當的字元集,沒必要個自己找事制造不可預期的麻煩。
我還推薦使用DATETIME類型,有不少人還認為它是8位元組長度,更浪費空間。事實上,5.6版本後,DATETIME類型已經進行優化了,不僅縮短為5位元組,同時也支援更新為目前最新時間戳功能,更友善了,是以我才優先推薦。
關于索引的那部分,淘寶丁奇同學指出第二小塊不夠嚴謹。我經過實際測試,驗證确實如此,已經更新了,在此向大家道歉,我自己也犯了經驗主義錯誤,同時感謝丁奇同學的細心指教。
此外,這份規範主要适用MySQL 5.6及之前的版本,不過文中提到的ICP、DATETIME是5.6版本才有的,請注意下。