【发布时间】:2023-06-28 02:47:01
【问题描述】:
我有一个包含 900,000 行的数据库表。 此表包含作为距离函数的火车行程的功率、制动功率、速度日志。
- 原产地
- 目的地
- 从出发点出发的距离
- 以 MW 为单位的功率读数
- 以 MW 为单位的制动力读数
- KPH 速读
有 13 个不同的目的地,出境和入境旅行有不同的数据集,因此有 26 个数据集。
目的是确定起点和终点特定组合在给定距离处的功率。
我尝试了两种不同的方法。这些工作正常,但速度极慢(大约每小时 6 秒)。鉴于我需要长时间运行此模拟,可能长达 25 年)。这将花费我超过 350 多个小时来运行它。
方法一) 使用 selectFrom 获取行进距离前后的数据数组以进行插值。
selectFrom(table).where(table.origin.eq(origin), table.destination.eq(destination), table.power.between(currentDistance-1,currentDistance+1) ).ArrayOfDoubles(table.power)
这将返回一个包含功率读数的大约
方法二) 在创建代理实例时为 TableFunction 提供参数和值数据
tableFunction.setArgumentsAndValues(distanceArray,powerArray);
此方法也有效,但由于每天产生约 30-40 个代理,模拟变得停滞不前。
【问题讨论】: