21 lines
651 B
Ruby
21 lines
651 B
Ruby
class AddPartialIndexToProjectsForIndexOnlyScans < ActiveRecord::Migration
|
|
include Gitlab::Database::MigrationHelpers
|
|
|
|
DOWNTIME = false
|
|
INDEX_NAME = 'index_projects_on_id_partial_for_visibility'
|
|
|
|
disable_ddl_transaction!
|
|
|
|
# Adds a partial index to leverage index-only scans when looking up project ids
|
|
def up
|
|
unless index_exists?(:projects, :id, name: INDEX_NAME)
|
|
add_concurrent_index :projects, :id, name: INDEX_NAME, unique: true, where: 'visibility_level IN (10,20)'
|
|
end
|
|
end
|
|
|
|
def down
|
|
if index_exists?(:projects, :id, name: INDEX_NAME)
|
|
remove_concurrent_index_by_name :projects, INDEX_NAME
|
|
end
|
|
end
|
|
end
|