MYSQL 数据库时间字段 INT,TIMESTAMP,DATETIME 性能效率的比较介绍

目录 一、准备工作 1.1 建表 1.2 插入100万条测试数据 二、MyISAM引擎 2.1 MyISAM 引擎无索引下的 dint/dtimestamp/d_datetime 2.1.1 int 类型是否调用 UNIX_TIMESTAMP 优化对比 2.1.2 timestamp 类型是否调用

                        目录一、准备工作1.1 建表1.2 插入100万条测试数据二、MyISAM引擎2.1 MyISAM 引擎无索引下的 dint/dtimestamp/d_datetime2.1.1 int 类型是否调用 UNIX_TIMESTAMP 优化对比2.1.2 timestamp 类型是否调用 UNIX_TIMESTAMP 优化对比2.1.3 datetime 类型是否调用 UNIX_TIMESTAMP 优化对比2.2 MyISAM 引擎有索引下的 dint/dtimestamp/d_datetime2.2.1 int 类型是否调用 UNIX_TIMESTAMP 优化对比2.2.2 timestamp 类型是否调用 UNIX_TIMESTAMP 优化对比2.2.3 datetime 类型是否调用 UNIX_TIMESTAMP 优化对比三、InnoDB引擎3.1 InnoDB 引擎无索引下的 dint/dtimestamp/d_datetime3.1.1 int 类型是否调用 UNIX_TIMESTAMP 优化对比3.1.2 timestamp 类型是否调用 UNIX_TIMESTAMP 优化对比3.1.3 datetime 类型是否调用 UNIX_TIMESTAMP 优化对比3.2 InnoDB 引擎无索引下的 dint/dtimestamp/d_datetime3.2.1 int 类型是否调用 UNIX_TIMESTAMP 优化对比3.2.2 timestamp 类型是否调用 UNIX_TIMESTAMP 优化对比3.2.3 datetime 类型是否调用 UNIX_TIMESTAMP 优化对比四、总结<p>前言:</p>

在数据库设计的时候,我们经常会需要设计时间字段,在 MYSQL 中,时间字段可以使用 int、timestamp、datetime 三种类型来存储,那么这三种类型哪一种用来存储时间性能比较高,效率好呢 ?

就这个问题,来一个实践出真知吧。

一、准备工作

1.1 建表

CREATE TABLE IF NOT EXISTS datetime_test ( id int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1, d_int int(11) NOT NULL DEFAULT '0', d_timestamp timestamp NULL DEFAULT NULL, d_datetime datetime DEFAULT NULL ) ENGINE=MyISAM AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8;

1.2 插入100万条测试数据

//插入d_intvalue=1到100万之间的数据 insert into datetime_test(d_int,d_timestamp,d_datetime) values(d_intvalue,FROM_UNIXTIME(d_intvalue),FROM_UNIXTIME(d_intvalue));

取中间的 20 万条做查询测试:

SELECT FROM_UNIXTIME(400000), FROM_UNIXTIME(600000) 1970-01-05 23:06:40, 1970-01-08 06:40:00

二、MyISAM引擎

2.1 MyISAM 引擎无索引下的 dint/dtimestamp/d_datetime