标签:
强烈参考:http://imysql.com/2008_07_17_timestamp_vs_int_and_datetime
CREATE TABLE t( d1 int(10) unsigned NOT NULL default 0, d2 timestamp NOT NULL default CURRENT_TIMESTAMP, d3 datetime NOT NULL, KEY d2 (d2), KEY d1 (d1), KEY d3 (d3) );
DELIMITER // CREATE PROCEDURE INS_T() BEGIN SET @i=1; WHILE 0<1 DO SET @i=@i+1; INSERT INTO t VALUES (1199116800+@i, FROM_UNIXTIME(1199116800+@i), FROM_UNIXTIME(1199116800+@i)); END WHILE; END;// DELIMITER ;
show index from t;
结果:
==> 利用 unsigned int
explain select * from t where d1 = 1199579155;
结果
==> 利用 timestamp
explain select * from t where d2 = ‘2008-01-06 08:25:55‘;
结果:
==> 利用 datetime
explain select * from t where d3 = ‘2008-01-06 08:25:55‘
结果:
==> 利用 unsigned int
explain select * from t where d1 >= 1199894400;
结果:
==> 利用 timestamp
explain select * from t where d2 >= from_unixtime(1199894400);
结果:
==> 利用 datetime
explain select * from t where d3 >= from_unixtime(1199894400);
结果:
从上面的2次对比中可以看到,对 d1 或 d2 字段检索时的索引长度都是 4,而对d3 检索时索引的长度是8.
因为 TIMESTAMP 实际上是 4字节 的 INT 值。因此,实际应用中,基本上完全可以采用 TIMESTAMP 来代替另外2种类型了,并且 TIMESTAMP 还能支持自动更新成当前最新时间,何乐而不为呢?
用TimeStamp 取代 Int 和 DateTime (更新中...)
标签:
原文地址:http://my.oschina.net/pingjiangyetan/blog/518929