鍍金池/ 問答/數(shù)據(jù)庫/ MySQL中字段用int時間戳還是用timestamp?因為查詢時該字段上有比較

MySQL中字段用int時間戳還是用timestamp?因為查詢時該字段上有比較多的范圍查詢?哪種性能會比較好一點。

created_at列加索引的前提下。
表數(shù)據(jù)量千萬級別。
explain顯示掃描行數(shù)是二百萬的級別
select count(*) from users where created_at<'2018-08-28 00:00:00' and created_at>='2018-08-01 00:00:00'
count大概是四五十萬級的別。這種范圍查詢 created_at用int時間戳和timestamp性能上哪種會比較好

回答
編輯回答
憶往昔

https://dev.mysql.com/doc/ref...

MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. 

TIMESTAMP 類型的這種轉(zhuǎn)換操作,相較于 INT,可能使查詢變慢。

2017年9月27日 21:29
編輯回答
凹凸曼

如果為了可視化,也就是在數(shù)據(jù)庫中能夠方便對看到數(shù)據(jù)時間,建議是保存為datetime,timestamp 還存在2038這個坎。

換句話說說你既然考慮int而不是bigint或者說varchar,那么就可以默認為你選擇了最多精確到

在這種情況下的話呢,建議還是采用 datetime

2017年6月30日 10:18
編輯回答
冷眸

如果從數(shù)據(jù)類型來說,timestamp占用的空間比較小,但是timestamp有個特性,在更新的時候會自動更新為當前時間,注意這個就好了

2018年8月13日 16:13
編輯回答
執(zhí)念

建議你用timestamp就行了,如果你需要利用timestamp進行范圍查詢,可以在該列添加索引。

2017年4月10日 01:40
編輯回答
乖乖瀦

試了一下,范圍查詢,int和timestamp, int性能更優(yōu),試了多次,用了多張表,表數(shù)據(jù)量在千萬級,explain結(jié)果中rows也差不多千萬,select count(1) from ... timestamp用的時間差不多每次都是int的4倍。

2018年8月27日 05:22