Optimise DB indices for common queries
This commit is contained in:
parent
d701a92bc0
commit
046bc0ca09
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class OptimiseIndices < ActiveRecord::Migration[7.0]
|
||||||
|
def change
|
||||||
|
add_index :users, "LOWER(screen_name)", order: :desc, unique: true
|
||||||
|
remove_index :users, :screen_name, unique: true
|
||||||
|
add_index :user_bans, :expires_at, order: :desc
|
||||||
|
add_index :announcements, %i[starts_at ends_at], order: :desc
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[7.0].define(version: 2023_10_28_091613) do
|
ActiveRecord::Schema[7.0].define(version: 2023_11_07_200845) do
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_10_28_091613) do
|
||||||
t.bigint "user_id", null: false
|
t.bigint "user_id", null: false
|
||||||
t.datetime "created_at", precision: nil, null: false
|
t.datetime "created_at", precision: nil, null: false
|
||||||
t.datetime "updated_at", precision: nil, null: false
|
t.datetime "updated_at", precision: nil, null: false
|
||||||
|
t.index ["starts_at", "ends_at"], name: "index_announcements_on_starts_at_and_ends_at", order: :desc
|
||||||
t.index ["user_id"], name: "index_announcements_on_user_id"
|
t.index ["user_id"], name: "index_announcements_on_user_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -306,6 +307,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_10_28_091613) do
|
||||||
t.bigint "banned_by_id"
|
t.bigint "banned_by_id"
|
||||||
t.datetime "created_at", precision: nil, null: false
|
t.datetime "created_at", precision: nil, null: false
|
||||||
t.datetime "updated_at", precision: nil, null: false
|
t.datetime "updated_at", precision: nil, null: false
|
||||||
|
t.index ["expires_at"], name: "index_user_bans_on_expires_at", order: :desc
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "users", id: :bigint, default: -> { "gen_timestamp_id('users'::text)" }, force: :cascade do |t|
|
create_table "users", id: :bigint, default: -> { "gen_timestamp_id('users'::text)" }, force: :cascade do |t|
|
||||||
|
@ -363,10 +365,10 @@ ActiveRecord::Schema[7.0].define(version: 2023_10_28_091613) do
|
||||||
t.string "sharing_custom_url"
|
t.string "sharing_custom_url"
|
||||||
t.datetime "notifications_updated_at", precision: nil
|
t.datetime "notifications_updated_at", precision: nil
|
||||||
t.datetime "inbox_updated_at", precision: nil
|
t.datetime "inbox_updated_at", precision: nil
|
||||||
|
t.index "lower((screen_name)::text)", name: "index_users_on_LOWER_screen_name", unique: true
|
||||||
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
|
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
|
||||||
t.index ["email"], name: "index_users_on_email", unique: true
|
t.index ["email"], name: "index_users_on_email", unique: true
|
||||||
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
|
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
|
||||||
t.index ["screen_name"], name: "index_users_on_screen_name", unique: true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "users_roles", id: false, force: :cascade do |t|
|
create_table "users_roles", id: false, force: :cascade do |t|
|
||||||
|
|
Loading…
Reference in New Issue