diff --git a/lms/migrations/versions/7858a12c4e4a_add_index_for_user_deduplication.py b/lms/migrations/versions/7858a12c4e4a_add_index_for_user_deduplication.py new file mode 100644 index 0000000000..e216b01e41 --- /dev/null +++ b/lms/migrations/versions/7858a12c4e4a_add_index_for_user_deduplication.py @@ -0,0 +1,24 @@ +"""Add index for user deduplication.""" + +import sqlalchemy as sa +from alembic import op + +revision = "7858a12c4e4a" +down_revision = "f6c442c861c4" + + +def upgrade() -> None: + # CONCURRENTLY can't be used inside a transaction. Finish the current one. + op.execute("COMMIT") + + op.create_index( + "ix__user_h_user_updated", + "user", + ["h_userid", sa.text("updated DESC")], + unique=False, + postgresql_concurrently=True, + ) + + +def downgrade() -> None: + op.drop_index("ix__user_h_user_updated", table_name="user") diff --git a/lms/models/user.py b/lms/models/user.py index b1d9bc399c..9c688a84a7 100644 --- a/lms/models/user.py +++ b/lms/models/user.py @@ -20,6 +20,7 @@ class User(CreatedUpdatedMixin, Base): "h_userid", name="uq__user__application_instance_id__h_userid", ), + sa.Index("ix__user_h_user_updated", "h_userid", sa.desc("updated")), ) id = sa.Column(sa.Integer, autoincrement=True, primary_key=True)