Commit 344f07e9 authored by Stan Hu's avatar Stan Hu

Add partial index for deploy keys

Per https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/31384, this
appears to drop the runtime of the query from 1.2 ms (cold), 500ms (warm
cache) to < 20 ms.
parent fbd5a6c6
# frozen_string_literal: true
class AddIndexOnIdAndTypeAndPublicToKeys < ActiveRecord::Migration[5.2]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
INDEX_NAME = "index_on_deploy_keys_id_and_type_and_public"
def up
add_concurrent_index(:keys,
[:id, :type],
where: "public = 't'",
unique: true,
name: INDEX_NAME)
end
def down
remove_concurrent_index_by_name(:keys, INDEX_NAME)
end
end
......@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2019_08_02_012622) do
ActiveRecord::Schema.define(version: 2019_08_02_235445) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_trgm"
......@@ -1770,6 +1770,7 @@ ActiveRecord::Schema.define(version: 2019_08_02_012622) do
t.boolean "public", default: false, null: false
t.datetime "last_used_at"
t.index ["fingerprint"], name: "index_keys_on_fingerprint", unique: true
t.index ["id", "type"], name: "index_on_deploy_keys_id_and_type_and_public", unique: true, where: "(public = true)"
t.index ["user_id"], name: "index_keys_on_user_id"
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment