1. 程式人生 > >資料庫中時間儲存型別相關

資料庫中時間儲存型別相關

1.背景:

  之前某個專案中,時間儲存為VARCHAR型別,然後業務邏輯有要求查找出某個時間段範圍內的資料。

  某同事的實現細節中用到了兩個方法:DATA_FORMAT講資料庫中時間資料格式化,UNIX_TIMESTAMP拿到時間戳。這樣子效率特別特別低。

  然後我給資料庫表增加了一個BIGINT型別欄位,UPDATE整張表,VARCHAR型別時間轉換成了整形型別時間,去掉上述兩個函式,效率提升了約33%,見另一篇關於資料庫優化的部落格記錄。

  隔了段時間,上司要求繼續優化。

2.實現:

  1.去掉增加的BIGINT型別時間欄位,

  2.資料入庫時候時間格式化,比如精度統一

  3.去掉函式

3.效果:

  時間篩選部分的時間消耗下降非常可觀,有一倍以上。

4.姿勢:

  1.不要在篩選列進行函式處理,以免全表掃描、索引等失效;

  2.如果要篩選時間,考慮入庫前格式化、篩選時候直接比較,如"2016-01-02 11:12:13" > "2016-01-02 11:12:11"。