【发布时间】:2012-07-23 17:28:51
【问题描述】:
我有一个与 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 列上的一个索引
- 时间戳列上的一个索引
我想这是第一种基本方法,但是如何优化呢?
【问题讨论】:
标签: ruby-on-rails database ruby-on-rails-3 activerecord indexing