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中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!