MySQL 設(shè)計(jì)數(shù)據(jù)表時(shí),時(shí)間類型 datetime、bigint、timestamp區(qū)別
數(shù)據(jù)庫中可以用datetime、bigint、timestamp來表示時(shí)間,那么選擇什么類型來存儲(chǔ)時(shí)間比較合適呢?
前期數(shù)據(jù)準(zhǔn)備
通過程序往數(shù)據(jù)庫插入50w數(shù)據(jù)
數(shù)據(jù)表:
其中time_long、time_timestamp、time_date為同一時(shí)間的不同存儲(chǔ)格式
實(shí)體類users
dao層接口
測(cè)試類往數(shù)據(jù)庫插入數(shù)據(jù)
sql查詢速率測(cè)試
通過datetime類型查詢:
耗時(shí):0.171
通過timestamp類型查詢
耗時(shí):0.351
通過bigint類型查詢
耗時(shí):0.130s
結(jié)論 在InnoDB存儲(chǔ)引擎下,通過時(shí)間范圍查找,性能bigint > datetime > timestamp
sql分組速率測(cè)試
使用bigint 進(jìn)行分組會(huì)每條數(shù)據(jù)進(jìn)行一個(gè)分組,如果將bigint做一個(gè)轉(zhuǎn)化在去分組就沒有比較的意義了,轉(zhuǎn)化也是需要時(shí)間的
通過datetime類型分組:
耗時(shí):0.176s
通過timestamp類型分組:
耗時(shí):0.173s
結(jié)論 在InnoDB存儲(chǔ)引擎下,通過時(shí)間分組,性能timestamp > datetime,但是相差不大
sql排序速率測(cè)試
通過datetime類型排序:
耗時(shí):1.038s
通過timestamp類型排序
耗時(shí):0.933s
通過bigint類型排序
耗時(shí):0.775s
結(jié)論 在InnoDB存儲(chǔ)引擎下,通過時(shí)間排序,性能bigint > timestamp > datetime
小結(jié)
如果需要對(duì)時(shí)間字段進(jìn)行操作(如通過時(shí)間范圍查找或者排序等),推薦使用bigint,如果時(shí)間字段不需要進(jìn)行任何操作,推薦使用timestamp,使用4個(gè)字節(jié)保存比較節(jié)省空間,但是只能記錄到2038年記錄的時(shí)間有限。
文章來源:騰訊,如涉及到版權(quán)問題,請(qǐng)聯(lián)系網(wǎng)站管理員刪除!
- 上一篇:什么是本地緩存、分布式緩存以及多級(jí)緩存? 2023/1/7
- 下一篇:RocketMQ 客戶端負(fù)載均衡機(jī)制詳解及最佳實(shí)踐 2023/1/7