show create table 20130107date;
CREATE TABLE `20130107date` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`c_date_long` int(20) NOT NULL,
`idx_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`idx_date_long` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `20130107date_idx_date` (`idx_date`),
KEY `20130107date_idx_long` (`idx_date_long`)
) ENGINE=InnoDB
里面有90w数据,都是随机的时间.
先看没有索引的全表扫描
1 :
select COUNT(*) from 20130107date
where c_date BETWEEN DATE('20110101') and DATE('20110102')
这个需要1.54s
2:
select COUNT(*) from 20130107date
where c_date_long BETWEEN UNIX_TIMESTAMP('20110101') and UNIX_TIMESTAMP('20110102')
这个是2.3s
但是可以这样搞
3 :
select UNIX_TIMESTAMP('20110101') ,UNIX_TIMESTAMP('20110102');
得到结果1293811200和1293897600
然后
select COUNT(*) from 20130107date
where c_date_long BETWEEN 1293811200 and 1293897600;
发现变成了0.61s
1和2的差距还可以说是比较int和比较timestamp的差距,那么2和3的差距呢?难道多出来的时间是每一条记录都要evaluate UNIX_TIMESTAMP('20110102')?
然后用索引
select COUNT(*) from 20130107date
where idx_date_long BETWEEN UNIX_TIMESTAMP('20110101') and UNIX_TIMESTAMP('20110102');
select COUNT(*) from 20130107date
where idx_date BETWEEN '20110101' and '20110102'
毫无悬念,两个基本都是瞬时的.
分享到:
相关推荐
`TIMESTAMP` 是MySQL中一种非常有用的日期时间类型,它可以自动地更新为当前的日期和时间,并且可以存储从'1970-01-01 00:00:01' UTC到'2038年'之间的值。 #### TIMESTAMP 的显示格式 `TIMESTAMP` 列可以有不同的...
在MySQL中,日期和时间数据类型的处理是数据库操作中的常见任务。然而,有时出于特定需求,我们可能需要将日期存储为整型,比如Unix时间戳。这种情况下,我们需要掌握将整型日期转换为日期类型,以及反之转换的方法...
MySQL中的TIMESTAMP字段类型是用来存储时间戳值的,它可以记录自1970年1月1日00:00:00 UTC(协调世界时)以来的秒数。TIMESTAMP在不同的情境下有不同的用法,这主要体现在它的默认值和更新策略上。 1. **TIMESTAMP ...
在MySQL中,`TIMESTAMP`类型是一种存储日期和时间的特殊数据类型,它可以精确到秒,并且具有自动更新和初始化的能力。当你在表定义中指定`DEFAULT CURRENT_TIMESTAMP`和`ON UPDATE CURRENT_TIMESTAMP`时,`TIMESTAMP...
一般应用中,我们用timestamp,datetime,int类型来存储时间格式: int(对应javaBean中的Integer或int) 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不能使用mysql提供...
TIMESTAMP 类型用于存储日期和时间信息,格式为 ‘YYYY-MM-DD HH:MM:SS’,占用 4 字节的存储空间。TIMESTAMP 类型与 DATETIME 类型类似,但 TIMESTAMP 类型有一个自动更新的功能,即在插入或更新数据时,TIMESTAMP ...
在实际应用中,我们经常需要对数据进行自增长和时间戳记录,本文将详细介绍 MySQL 中的自增长和时间字段的使用。 自增长字段 在 MySQL 中,我们可以使用 auto_increment 属性来实现字段的自增长。例如,在创建用户...
在MySQL中,根据不同的应用场景和需求,可以选择多种方式来存储日期和时间信息。本篇文章将详细介绍三种常用的时间类型:`datetime`、`bigint` 和 `timestamp`,并通过一个实际的例子来探讨它们在不同场景下的表现。...
TIMESTAMP字段类型在MySQL中用于存储日期和时间信息,它的范围可以从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。与DATE或DATETIME不同,TIMESTAMP在存储时会自动转换为服务器的UTC时间,而在检索时再...
例如,在创建`USER`表时,`REGISTRATION_TIME`和`LAST_LOGIN_TIME`字段被定义为`TIMESTAMP`类型,并分别设置了默认值为`CURRENT_TIMESTAMP`,这意味着每当有新记录插入时,如果没有显式提供时间,则这两个字段将自动...
它提供自动初始化和更新到当前的日期和时间的功能,只需在列的定义中设置 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。 使用 INT 字段保存 Unix 时间 使用 INT 字段保存 Unix 时间是最普通的方法...
2. 日期和时间类型:MySQL 的日期和时间类型包括 DATETIME、DATE、TIMESTAMP、TIME 和 YEAR。DATETIME 可以存储日期和时间,而 DATE 和 TIME 分别只存储日期和时间部分。TIMESTAMP 类型特别之处在于它可以自动更新,...
MySQL提供了一个名为`FROM_UNIXTIME()`的函数,用于将这种时间戳转换为可读的日期和时间格式。该函数接受两个参数,第一个参数是Unix时间戳,第二个参数是可选的时间格式字符串。如果没有提供格式字符串,它会默认以...
在本文中,我们使用 INT、VARCHAR、TIMESTAMP 等数据类型来定义用户表的结构。 知识点八:Mysql 索引 Mysql 索引是指 Mysql 数据库中的索引。索引可以提高查询的速度,但是它也会增加数据添加的时间。在本文中,...
2. 数据类型:MySQL支持多种数据类型,如整数类型(TINYINT、INT、BIGINT)、浮点类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)等。 3. SQL语言...
MySQL支持多种数据类型,包括数值类型(如`INT`, `FLOAT`)、字符串类型(如`VARCHAR`, `CHAR`)和日期时间类型(如`DATE`, `TIMESTAMP`)等。 #### 变量 - **自定义变量**:可以在存储过程中声明变量,并对其进行...
这些数据类型都可以用来存储日期和时间值,但它们的格式和取值范围不同。例如,DATE 是年月日格式,DATETIME 是年月日时分秒格式,而 TIMESTAMP 是时间戳格式。 枚举类型包括 ENUM 和 SET。这些数据类型都可以用来...
MySQL中的Timestamp类型是一种用于存储日期和时间的字段类型,它特别适用于记录数据的创建和更新时间。Timestamp在MySQL中有两种常见的特殊属性:默认值为CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。 1. ...