卧草泥马 发表于 2021-4-20 15:10:02

[解决]来问下技术问题,查找当天时间怎么效率最高

本帖最后由 卧草泥马 于 2021-4-20 16:26 编辑

表中两个字段

time1 是int放的是时间戳
time2 是timestamp格式

而且这两个字段都做了 index索引

数据量大概三千万条

问题就是我查找当天的记录,不管是用time1还是time2,速度都不理想

SELECT count(id) as numsFROM `AAA` WHEREdate_format(from_UNIXTIME(time1),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')

或者

SELECT COUNT( id ) AS nums FROM `AAA` WHERE DATEDIFF( time2, NOW( ) ) =0


求个高效的语句,感谢,汇报下结论
===========================
最后用了最直接的查询
$today_start = strtotime(date('Y-m-d 00:00:00'));
$today_end = strtotime(date('Y-m-d 23:59:59'));
SELECT COUNT( id )FROM `AAA` WHERE time1>$today_start AND time1<$today_end

速度肉眼可见的提升,哈

0度寂寞 发表于 2021-4-20 15:18:56

在SQL中有计算语句好像不好
试下直接的
SELECT count(id) as numsFROM `AAA` WHERE time1=当天时间戳

卧草泥马 发表于 2021-4-20 15:40:14

0度寂寞 发表于 2021-4-20 15:18
在SQL中有计算语句好像不好
试下直接的
SELECT count(id) as numsFROM `AAA` WHERE time1=当天时间戳

当天时间戳 ?

这个不是很明白

娃哈哈 发表于 2021-4-20 15:43:17

索引做了吗

四维思想 发表于 2021-4-20 15:47:24

算出当天的起始时间,然后 time>? and time<?这样效率最最高 :lol:

leexiaochong 发表于 2021-4-20 15:48:01

对于mysql数据库,我只是用来存储,不进行占用资源的计算
如果确实需要搜索,使用第三方方案,使用Lucene.net来解决

0度寂寞 发表于 2021-4-20 15:49:28

算出当天的时间戳范围
然后再搜这个范围的数据

零辰三点 发表于 2021-4-20 15:57:58

0度寂寞 发表于 2021-4-20 15:49
算出当天的时间戳范围
然后再搜这个范围的数据

这个方法可以
页: [1]
查看完整版本: [解决]来问下技术问题,查找当天时间怎么效率最高