Create an index with both indexed and `INCLUDE` columns in PostgreSQL using ActiveRecord

Viewed 591

What I want to create is one of the indexes that has some columns indexed and others included. This kind of index is described by PostgreSQL in their documentation here

The SQL query to create the index looks something like CREATE INDEX tab_x_y ON tab(x) INCLUDE (y);

Looking at the ActiveRecord PostgreSQL adapter documentation here

I don't see any option for me to use this INCLUDE column feature.

Do I have to run this as a raw SQL query? Is there another way?

Notes

  1. I am not asking how to run a query or which index will be used for a query.
  2. I am not asking how to create a regular index using ActiveRecord.
  3. I am not asking how to create a migration using ActiveRecord.
  4. I specifically want information about how to create a specific kind of index with a specific option.
1 Answers

Hey I didn't manage to use add_index neither created_index so I just used raw SQL.

Here's how:

def up
    execute <<-SQL
      create index my_index
      on table (column1, column2, ..., columnN)
      include (column1, column2, columnN)
    SQL
end 
Related