From b0eafaaca10ce291490ee8b69cae0ce7592c1694 Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Tue, 9 Jul 2019 17:34:44 -0500 Subject: Add index for issues on relative position, project and state --- app/models/issue.rb | 2 +- .../bw-add-index-for-relative-position.yml | 5 +++++ ...09220143_add_index_to_issues_relative_position.rb | 20 ++++++++++++++++++++ db/schema.rb | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/bw-add-index-for-relative-position.yml create mode 100644 db/migrate/20190709220143_add_index_to_issues_relative_position.rb diff --git a/app/models/issue.rb b/app/models/issue.rb index 12d30389910..8c5dd5e382e 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -131,7 +131,7 @@ class Issue < ApplicationRecord when 'due_date' then order_due_date_asc when 'due_date_asc' then order_due_date_asc when 'due_date_desc' then order_due_date_desc - when 'relative_position' then order_relative_position_asc + when 'relative_position' then order_relative_position_asc.with_order_id_desc else super end diff --git a/changelogs/unreleased/bw-add-index-for-relative-position.yml b/changelogs/unreleased/bw-add-index-for-relative-position.yml new file mode 100644 index 00000000000..80ca20992e6 --- /dev/null +++ b/changelogs/unreleased/bw-add-index-for-relative-position.yml @@ -0,0 +1,5 @@ +--- +title: Add index for issues on relative position, project, and state for manual sorting +merge_request: 30542 +author: +type: fixed diff --git a/db/migrate/20190709220143_add_index_to_issues_relative_position.rb b/db/migrate/20190709220143_add_index_to_issues_relative_position.rb new file mode 100644 index 00000000000..effab33ce4f --- /dev/null +++ b/db/migrate/20190709220143_add_index_to_issues_relative_position.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class AddIndexToIssuesRelativePosition < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + disable_ddl_transaction! + + INDEX_NAME = 'index_issues_on_project_id_and_state_and_rel_position_and_id'.freeze + + def up + add_concurrent_index :issues, [:project_id, :state, :relative_position, :id], order: { id: :desc }, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :issues, INDEX_NAME + end +end diff --git a/db/schema.rb b/db/schema.rb index 79cd1a3a797..681353121db 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1682,6 +1682,7 @@ ActiveRecord::Schema.define(version: 2019_07_15_114644) do t.index ["project_id", "created_at", "id", "state"], name: "index_issues_on_project_id_and_created_at_and_id_and_state", using: :btree t.index ["project_id", "due_date", "id", "state"], name: "idx_issues_on_project_id_and_due_date_and_id_and_state_partial", where: "(due_date IS NOT NULL)", using: :btree t.index ["project_id", "iid"], name: "index_issues_on_project_id_and_iid", unique: true, using: :btree + t.index ["project_id", "state", "relative_position", "id"], name: "index_issues_on_project_id_and_state_and_rel_position_and_id", order: { id: :desc }, using: :btree t.index ["project_id", "updated_at", "id", "state"], name: "index_issues_on_project_id_and_updated_at_and_id_and_state", using: :btree t.index ["relative_position"], name: "index_issues_on_relative_position", using: :btree t.index ["state"], name: "index_issues_on_state", using: :btree -- cgit v1.2.1