背景:在1500万行数据中,根据开始时间与结束时间索引查询数据,由于数据过多,需要间隔筛选。
数据表字段:ID、时间戳、数据1、数据2、数据3、数据4、数据5
其中ID为自增主键,增加时间戳为索引。
其他踩坑方法就不记录了。。。。
解决思路:
根据时间直接索引数据很慢的,ID是主键,在sql语句中操作主键速度很快,可以根据输入的开始时间与结束时间获取对应起始ID与结束ID,通过ID差值可以得到需要索引的数据总行数,最后通过ID为判断条件开始分页查询,注意:分页查询偏移量越大速度越慢,所以分页查询时,将偏移量固定为0,改变改变查询的起始ID即可。
关于筛选可以使用WHERE MOD ( 表.id, 10) = 0也可以用WHERE aaa.id%10 = 0,其中的10表示ID序号间隔10个进行查询。