我有一个与 Oracle 对话的 Rails 应用程序。
平均而言,我的请求具有以下完成时间:(从 rails production.log 中提取)
Completed 200 OK in 85ms (Views: 8.4ms | ActiveRecord: 17.1ms)
基本上,我有一个速度表:
- gps_id
- 速度
- 时间戳
=> 它以给定的时间戳存储给定 gps 设备的速度。
我的 ActiveRecord 请求类似于:
from = DateTime.strptime(params[:from], "%Y-%m-%dT%H:%M:%S%Z")
to = DateTime.strptime(params[:to], "%Y-%m-%dT%H:%M:%S%Z")
@speeds = Speed.where('gps_id = ? and timestamp >= ? and timestamp <= ?', gps.id, from, to).order('id desc')
=> 它检索两个时间戳之间的所有速度信息
由于请求真的很慢,我在 Speed 表上添加了 2 个索引:
- gps_id 列上的一个索引
- 时间戳列上的一个索引
我想这是第一种基本方法,但是如何优化呢?