From 51efccd3b1ef5bd4a24f4c3fad2e34b42d8840c0 Mon Sep 17 00:00:00 2001 From: Giorgio Gilestro Date: Mon, 25 May 2026 22:55:33 +0200 Subject: [PATCH] db: drop redundant user_id index on email_sends The composite ix_email_sends_user_kind_sent (user_id, kind, sent_at) already satisfies leftmost-prefix WHERE user_id=? lookups on both MariaDB and SQLite, so the standalone per-column index was dead weight. Drop it before the migration ever lands in prod. --- alembic/versions/0017_email_digest.py | 4 ---- app/models.py | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/alembic/versions/0017_email_digest.py b/alembic/versions/0017_email_digest.py index a3e09d0..38cfd4e 100644 --- a/alembic/versions/0017_email_digest.py +++ b/alembic/versions/0017_email_digest.py @@ -46,13 +46,9 @@ def upgrade() -> None: "email_sends", ["user_id", "kind", "sent_at"], ) - op.create_index( - op.f("ix_email_sends_user_id"), "email_sends", ["user_id"], - ) def downgrade() -> None: - op.drop_index(op.f("ix_email_sends_user_id"), table_name="email_sends") op.drop_index("ix_email_sends_user_kind_sent", table_name="email_sends") op.drop_table("email_sends") op.drop_column("users", "digest_tone") diff --git a/app/models.py b/app/models.py index 64ea415..2548d14 100644 --- a/app/models.py +++ b/app/models.py @@ -328,7 +328,7 @@ class EmailSend(Base): id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True) user_id: Mapped[int] = mapped_column( - ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True, + ForeignKey("users.id", ondelete="CASCADE"), nullable=False, ) kind: Mapped[str] = mapped_column(String(16), nullable=False) # "daily" | "weekly" sent_at: Mapped[datetime] = mapped_column(