BIGINT vs. INT
作为主键,使用INT
当定义表的主键时,有2种选择
BIGINT AUTO_INCREMENTINT 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保存的时候,是以当前的时区来保存。检索的时候会转化到对应的时区。