Di aplikasi Ruby on Rails saya, saya memiliki model Message
yang memiliki kolom created_at
dan kolom status_updated_at
. Keduanya adalah waktu kencan.
Untuk mempercepat kueri seperti Message.where(status: 'delivered', account_id: 11).where('status_updated_at - created_at >= ?', "180 seconds")
, saya ingin menambahkan indeks pada perbedaan antara kolom status_updated_at
dan created_at
.
Saya sudah mencoba kode ini:
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
yang menghasilkan PG::UndefinedColumn: ERROR: column "status_updated_at-created_at" does not exist
Anehnya, katakanlah jika saya hanya ingin menambahkan indeks ke status_udpated_at - created_at
dengan melakukan add_index :messages, "(status_updated_at-created_at)", name: 'dashboard_delivery_time_index'
, itu akan berhasil.
Ada saran? Terima kasih!