【发布时间】:2019-10-22 09:28:10
【问题描述】:
在我的 Ruby on Rails 应用程序中,我有一个模型 Message,它有一个 created_at 列和一个 status_updated_at 列。它们都是日期时间。
为了加快Message.where(status: 'delivered', account_id: 11).where('status_updated_at - created_at >= ?', "180 seconds")等查询的速度,我想为status_updated_at和created_at列的差异添加索引。
我试过这段代码:
class AddMessageIndicesForDashboard < ActiveRecord::Migration[5.1]
def change
add_index :messages, [:status, :account_id, :created_at, "(status_updated_at-created_at)"], name: 'dashboard_delivery_time_index'
end
end
导致PG::UndefinedColumn: ERROR: column "status_updated_at-created_at" does not exist
奇怪的是,假设我只想通过 add_index :messages, "(status_updated_at-created_at)", name: 'dashboard_delivery_time_index' 将索引添加到 status_udpated_at - created_at,它会起作用。
有什么建议吗?谢谢!
【问题讨论】:
标签: ruby-on-rails postgresql indexing database-migration