Mysql
VARCHAR 或 DATETIME 使用哪個列更好?
我有一個使用 Date 來選擇日期名稱和編號的腳本,如下所示
2018-06-04 =becomes=> Monday(04, June) 2018-06-04 =or becomes=> Monday(04) // In no need for Month
所以我所做的是使用
DATETIME
數據類型在表中創建一個列,然後我設置這樣的值000-06-04 //case1 000-00-04 //case2
這是執行此操作的正確方法嗎,或者如果我使用
VARCHAR(18)
數據類型並像這樣直接編寫它會更好Monday(04, June) //case1 Monday(04) //case2
使用
DATETIME
需要我DATE_FORMAT()
以後使用,而使用VARCHAR(18)
不需要。SELECT DATE_FORMAT(date, '%W(%d, %m)') FROM table //case1 SELECT date FROM table //case2
我不在乎易用性,但性能。
如手動
DATE
類型所述,內部由 3 個字節表示,這對於所需的數據類型而言是最小的。TIMESTAMP
在內部表示為BIGINT
自紀元以來的秒數(4 個字節),但TIMESTAMP
如果伺服器的 TZ 不是 UTC,則始終強制轉換為/從 UTC 轉換。這可能會導致大量成本。DATE
與日期相關的功能兼容,比如week()
ormonthname()
所以它看起來是最好的選擇。
DATE
搜尋/排序/加入/組/之間的效率要高得多VARCHAR(18)
,VARCHAR()
甚至不是一個選項。