存储时间与存储周期(存储时间是什么意思)

lxf2023-12-25 15:20:01

bitscn.com MySQL时间戳和int存储时间

Sql代码

显示创建表2013 01 07 date;

创建表` 20130107date `(

` id ' int(11)NOT NULL AUTO _ INCREMENT,

` c_date `时间戳不为空默认当前时间戳,

` c_date_long` int(20) NOT NULL,

` idx_date `时间戳不为空默认值& # 39;0000-00-00 00:00:00',

` idx_date_long` int(11) NOT NULL,

主键(` id `),

KEY ` 2013 01 07 date _ idx _ date `(` idx _ date `),

KEY ` 2013 01 07 date _ idx _ long `( ` idx _ date _ long `)

)ENGINE=InnoDB

里面有90w的数据,都是随机时间。

先看不带索引的全表扫描。

1 :

Sql代码

从2013 01 07日期选择计数(*)

其中c_date介于日期(& # 39;20110101')和日期(& # 39;20110102')

这个需要1.54秒

2:

Sql代码

从2013 01 07日期选择计数(*)

其中c_date_long介于UNIX _ TIMESTAMP(& # 39;20110101')和UNIX _ TIMESTAMP(& # 39;20110102')

这是2.3秒

但是可以这样做。

3 :

Sql代码

select UNIX _ TIMESTAMP(& # 39;20110101'),UNIX _ TIMESTAMP(& # 39;20110102');

结果得到1293811200和1293897600。

然后

Sql代码

从2013 01 07日期选择计数(*)

其中c_date_long介于EN 1293811200和1293897600之间;

发现变成了0.61s。

1和2的差距也可以说是比较int和比较timestamp的差距。2和3的差距呢?每条记录应该被评估的额外时间不是UNIX _ timestamp(& # 39;20110102')?

然后使用索引

Sql代码

从2013 01 07日期选择计数(*)

其中idx_date_long介于UNIX _ TIMESTAMP(& # 39;20110101')和UNIX _ TIMESTAMP(& # 39;20110102');

从2013 01 07日期选择计数(*)

其中idx_date介于& # 39;20110101'还有& # 39;20110102'

毫无悬念,两者基本都是瞬间的。

bitsCN.com adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!