日期:2014-05-16  浏览次数:20760 次

MySQL字段比较:dateime和timestamp

我相信在绝大部分的mysql应用中,存放日期时间的字段类型都会选择使用datetime或者timestamp类型,datetime的日期范围从1001到9999年,采用8位整数将日期转换为'YYYYMMDDHHMMSS'的形式进行存放.timestamp就是unix时间戳(1970-2038),采用4为整数进行存储,并且默认提供自动更新功能.所以,很多人或者文章都会说在时间范围允许的情况下最好采用timestamp进行日期类型值得存储.

?

我做了对于datetime和timestamp字段进行不同情况下的查询操作的benchmark(使用jdbc作为app层进行数据获取),得到如下结果:

无索引


?有索引


?

得出结论:如果在查询时以unix时间戳形式获取数据,那么查询效率会更高,因为timestamp的存储就是时间戳,无需转换,而如果要获取时间的ansic格式,datetime将会更快,因为其存储格式和ansic格式就很接近了.如果要考虑到硬盘存储空间,显然是timestamp更小,但是对于100w数据,也只是小4m左右,所以对于现在时间的宝贵性,硬盘空间的价值就显得不那么重要了