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.