【发布时间】:2014-04-11 10:18:23
【问题描述】:
我在 Rails 应用程序中使用 validates_overlap gem (https://github.com/robinbortlik/validates_overlap)。这是模型代码:
validates :start_time, :end_time, overlap: { scope: "device_id", exclude_edges: ["start_time", "end_time"] }
这是它触发的 SQL:
SELECT 1 AS one FROM "bookings" WHERE
((bookings.end_time IS NULL OR bookings.end_time > '2014-04-11 13:00:00.000000') AND
(bookings.start_time IS NULL OR bookings.start_time < '2014-04-11 16:00:00.000000') AND
bookings.device_id = 20) LIMIT 1
我只是想知道我是否应该在我的 postgres 数据库中添加一个涵盖 start_time、end_time 和 device_id 或类似内容的索引?例如像这样:
add_index :bookings, [:device_id, :start_time, :end_time], unique: true
【问题讨论】:
标签: ruby-on-rails postgresql validation indexing