From 2491b7b7e3d8a3c8200bfb9aa7389e00a11d307e Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Wed, 18 Jun 2025 11:42:23 +0300 Subject: [PATCH] adjust indexes --- app/models/email_event.rb | 2 +- app/models/submission.rb | 11 ++++++----- app/models/template.rb | 1 + ...0250617072547_add_email_events_event_type_index.rb | 4 ++-- .../20250617075609_add_submissions_template_index.rb | 3 +++ .../20250618085322_add_archived_templates_index.rb | 8 ++++++++ db/schema.rb | 6 ++++-- 7 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 db/migrate/20250618085322_add_archived_templates_index.rb diff --git a/app/models/email_event.rb b/app/models/email_event.rb index d4eae8e0..ed796226 100644 --- a/app/models/email_event.rb +++ b/app/models/email_event.rb @@ -20,8 +20,8 @@ # # index_email_events_on_account_id_and_event_datetime (account_id,event_datetime) # index_email_events_on_email (email) +# index_email_events_on_email_event_types (email) WHERE ((event_type)::text = ANY ((ARRAY['bounce'::character varying, 'soft_bounce'::character varying, 'complaint'::character varying, 'soft_complaint'::character varying])::text[])) # index_email_events_on_emailable (emailable_type,emailable_id) -# index_email_events_on_event_type_and_email (event_type,email) WHERE ((event_type)::text = ANY ((ARRAY['bounce'::character varying, 'soft_bounce'::character varying, 'complaint'::character varying, 'soft_complaint'::character varying])::text[])) # index_email_events_on_message_id (message_id) # # Foreign Keys diff --git a/app/models/submission.rb b/app/models/submission.rb index b5b59479..002933e5 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -23,11 +23,12 @@ # # Indexes # -# index_submissions_on_account_id_and_id (account_id,id) -# index_submissions_on_account_id_and_template_id_and_id (account_id,template_id,id) WHERE (archived_at IS NULL) -# index_submissions_on_created_by_user_id (created_by_user_id) -# index_submissions_on_slug (slug) UNIQUE -# index_submissions_on_template_id (template_id) +# index_submissions_on_account_id_and_id (account_id,id) +# index_submissions_on_account_id_and_template_id_and_id (account_id,template_id,id) WHERE (archived_at IS NULL) +# index_submissions_on_account_id_and_template_id_and_id_archived (account_id,template_id,id) WHERE (archived_at IS NOT NULL) +# index_submissions_on_created_by_user_id (created_by_user_id) +# index_submissions_on_slug (slug) UNIQUE +# index_submissions_on_template_id (template_id) # # Foreign Keys # diff --git a/app/models/template.rb b/app/models/template.rb index f37e83bc..41b635a0 100644 --- a/app/models/template.rb +++ b/app/models/template.rb @@ -25,6 +25,7 @@ # # index_templates_on_account_id (account_id) # index_templates_on_account_id_and_folder_id_and_id (account_id,folder_id,id) WHERE (archived_at IS NULL) +# index_templates_on_account_id_and_id_archived (account_id,id) WHERE (archived_at IS NOT NULL) # index_templates_on_author_id (author_id) # index_templates_on_external_id (external_id) # index_templates_on_folder_id (folder_id) diff --git a/db/migrate/20250617072547_add_email_events_event_type_index.rb b/db/migrate/20250617072547_add_email_events_event_type_index.rb index 935d377b..6a543efb 100644 --- a/db/migrate/20250617072547_add_email_events_event_type_index.rb +++ b/db/migrate/20250617072547_add_email_events_event_type_index.rb @@ -2,7 +2,7 @@ class AddEmailEventsEventTypeIndex < ActiveRecord::Migration[8.0] def change - add_index :email_events, %i[event_type email], - where: "event_type IN ('bounce', 'soft_bounce', 'complaint', 'soft_complaint')" + add_index :email_events, :email, where: "event_type IN ('bounce', 'soft_bounce', 'complaint', 'soft_complaint')", + name: 'index_email_events_on_email_event_types' end end diff --git a/db/migrate/20250617075609_add_submissions_template_index.rb b/db/migrate/20250617075609_add_submissions_template_index.rb index 9004818c..9bfdd5dc 100644 --- a/db/migrate/20250617075609_add_submissions_template_index.rb +++ b/db/migrate/20250617075609_add_submissions_template_index.rb @@ -3,5 +3,8 @@ class AddSubmissionsTemplateIndex < ActiveRecord::Migration[8.0] def change add_index :submissions, %i[account_id template_id id], where: 'archived_at IS NULL' + add_index :submissions, %i[account_id template_id id], + where: 'archived_at IS NOT NULL', + name: 'index_submissions_on_account_id_and_template_id_and_id_archived' end end diff --git a/db/migrate/20250618085322_add_archived_templates_index.rb b/db/migrate/20250618085322_add_archived_templates_index.rb new file mode 100644 index 00000000..b55f52a5 --- /dev/null +++ b/db/migrate/20250618085322_add_archived_templates_index.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddArchivedTemplatesIndex < ActiveRecord::Migration[8.0] + def change + add_index :templates, %i[account_id id], where: 'archived_at IS NOT NULL', + name: 'index_templates_on_account_id_and_id_archived' + end +end diff --git a/db/schema.rb b/db/schema.rb index 7d2eae1e..703b5df7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_06_17_075609) do +ActiveRecord::Schema[8.0].define(version: 2025_06_18_085322) do # These are extensions that must be enabled in order to support this database enable_extension "btree_gin" enable_extension "plpgsql" @@ -177,8 +177,8 @@ ActiveRecord::Schema[8.0].define(version: 2025_06_17_075609) do t.datetime "created_at", null: false t.index ["account_id", "event_datetime"], name: "index_email_events_on_account_id_and_event_datetime" t.index ["email"], name: "index_email_events_on_email" + t.index ["email"], name: "index_email_events_on_email_event_types", where: "((event_type)::text = ANY ((ARRAY['bounce'::character varying, 'soft_bounce'::character varying, 'complaint'::character varying, 'soft_complaint'::character varying])::text[]))" t.index ["emailable_type", "emailable_id"], name: "index_email_events_on_emailable" - t.index ["event_type", "email"], name: "index_email_events_on_event_type_and_email", where: "((event_type)::text = ANY ((ARRAY['bounce'::character varying, 'soft_bounce'::character varying, 'complaint'::character varying, 'soft_complaint'::character varying])::text[]))" t.index ["message_id"], name: "index_email_events_on_message_id" end @@ -306,6 +306,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_06_17_075609) do t.text "name" t.index ["account_id", "id"], name: "index_submissions_on_account_id_and_id" t.index ["account_id", "template_id", "id"], name: "index_submissions_on_account_id_and_template_id_and_id", where: "(archived_at IS NULL)" + t.index ["account_id", "template_id", "id"], name: "index_submissions_on_account_id_and_template_id_and_id_archived", where: "(archived_at IS NOT NULL)" t.index ["created_by_user_id"], name: "index_submissions_on_created_by_user_id" t.index ["slug"], name: "index_submissions_on_slug", unique: true t.index ["template_id"], name: "index_submissions_on_template_id" @@ -386,6 +387,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_06_17_075609) do t.text "preferences", null: false t.boolean "shared_link", default: false, null: false t.index ["account_id", "folder_id", "id"], name: "index_templates_on_account_id_and_folder_id_and_id", where: "(archived_at IS NULL)" + t.index ["account_id", "id"], name: "index_templates_on_account_id_and_id_archived", where: "(archived_at IS NOT NULL)" t.index ["account_id"], name: "index_templates_on_account_id" t.index ["author_id"], name: "index_templates_on_author_id" t.index ["external_id"], name: "index_templates_on_external_id"