sql - Rails Postgres 功能索引

标签 sql ruby-on-rails postgresql indexing

我应该如何将包含函数的多列索引输入到 schema.rb 中?

例如这行不通:

add_index "temporary_events", ["templateinfoid", "campaign", "date(gw_out_time)", "messagetype"], :name => "temporary_events_campaign_tinfoid_date_messagetype"

rake db:test:load

rake aborted!

PGError: ERROR: column "date(gw_out_time)" does not exist

: CREATE INDEX "temporary_events_campaign_tinfoid_date_messagetype" ON "temporary_events" ("templateinfoid", "campaign", "date(gw_out_time", "messagetype")

最佳答案

用于创建索引的内置 ActiveRecord 方法 (add_index) 不支持函数或任何其他更高级的功能。相反,您可以使用 execute 通过 SQL 创建索引:

execute <<-SQL
  CREATE INDEX temporary_events_campaign_tinfoid_date_messagetype
  ON temporary_events(templateinfoid, campaign, date(gw_out_time), messagetype);
SQL

请注意,如果您未使用 SQL 架构格式 (config.active_record.schema_format = :sql),则在迁移中使用 execute 可能会出现问题。如需更多信息,请搜索 schema_format .

关于sql - Rails Postgres 功能索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3265190/

相关文章:

数据库;同时获取3个表的信息

sql - 寻找嵌套集的面包屑

SQL 子字符串 - 删除最后一个字符

ruby-on-rails - 你如何使用 attr_accessible?

PHP PDO + PostgreSQL - 事务处理

mysql - 重复问题

mysql 日期时间格式%m-%d-%Y 在rails 形式中抛出超出范围的错误

ruby-on-rails - 让 find_by in rails 返回多个结果

MySQL -> Postgres

postgresql - 使用 postgres 将大量行从一个表移动到另一个新表的有效方法