BIGINT
vs. INT
作为主键,使用INT
当定义表的主键时,有2种选择
BIGINT AUTO_INCREMENT
INT UNSIGNED AUTO_INCREMENT
一般来说,BIGINT
和INT
都可以作为表的主键,BIGINT
是8个字节,INT
是4个字节。在这里,建议使用INT
,因为能够支撑43亿的数据量,对于很多应用,这是个足够的数据。
表示时间
INT UNSIGNED
的最大值是4294967295 (0xffffffff)
.转化成时间是2106年2月7日星期日下午2点28分 GMT+08:00
.INT
的最大值是2147483647
, 转化成时间是2038年1月19日星期二上午11点14分 GMT+08:00
.BIGINT
的最大值是9223372036854775807
, 转化成时间是2262年4月12日星期六早上7点47分 GMT+08:00
.BIGINT UNSIGNED
的最大值是18446744073709551615
, 转化成时间是2554年7月22日星期一早上7点34分 GMT+08:00
.
因此,根据数据的范围,来选择对应的类型。
DATETIME
vs. TIMESTAMP
DATETIME
的大小是8字节,TIMESTAMP
的大小是4字节。
TIMESTAMP
表示的是1970年1月1号的时间,它的范围是从’1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC.DATETIME
以YYYY-MM-DD hh:mm:ss
的格式保存,它的范围是从’1000-01-01 00:00:00’到 ‘9999-12-31 23:59:59’- 从MySQL 5起,
TIMESTAMP
保存的时候,是以当前的时区来保存。检索的时候会转化到对应的时区。