Partial Indexing for Enums
If you only query specific enum values, a partial index improves performance while reducing storage space.
For example, if you mostly query active
users but rarely query inactive
or banned
users, create an index for only active users:
class AddPartialIndexToUsers < ActiveRecord::Migration[7.0]
def change
execute <<-SQL
CREATE INDEX index_users_on_active_status
ON users(status)
WHERE status = 0;
SQL
end
end
This makes queries like User.where(status: :active)
faster without indexing other values unnecessarily.