java按月份查询记录,java – TOP [N]以最佳方式按用户查询记录组

我今天遇到了一个有趣的问题:

让我们假设以下条件

1.有n个用户

2.系统在移动时收集每个驾驶员的GPS坐标

3.我们必须按降序排序按LAST_UPDATE_DATE排序的每个用户的最后10个GPS坐标记录

4.表中有超过1982008条记录

我通过查询最后{(10 [阈值])* n}记录解决了这个问题,并使用HashMap将它们排列在java中,其中用户是Key,各个坐标的列表是值

这似乎不是最好的解决方案,因为它可能会选择随机记录,并且可能无法覆盖每个用户10条记录,

在for循环中按用户查询它也不是最佳解决方案,因为它需要多个数据库调用

任何人都可以使用Spring数据JPA建议什么是最好的解决方案,我也打开使用Normal JDBC,以防Spring数据JPA无法解决这个问题

我正在使用Spring数据JPA,Mysql,Java 8

这是create table命令

@RaymondNijland好的,这是create table命令

CREATE TABLE `gps_coordinate` (

`ID` BIGINT(50) NOT NULL AUTO_INCREMENT,

`user_id` VARCHAR(255) NULL DEFAULT '0',

`driver_id` INT(20) NULL DEFAULT '0',

`latitude` VARCHAR(50) NULL DEFAULT '0.00000000',

`longitude` VARCHAR(50) NULL DEFAULT '0.00000000',

`distance_in_miles` VARCHAR(50) NULL DEFAULT '0.00',

`distance_in_kms` VARCHAR(50) NULL DEFAULT '0.00',

`device_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

`created_by` VARCHAR(50) NULL DEFAULT 'Anonymous',

`created_date` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,

`updated_by` VARCHAR(50) NULL DEFAULT 'Anonymous',

`updated_date` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`ID_HUB`),

INDEX `user_fk` (`user_id`),

)

COLLATE='utf8_general_ci'

ENGINE=InnoDB

AUTO_INCREMENT=208445

;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值