diff --git a/backend/open_webui/migrations/versions/a749ab2aa953_add_memory_user_id_index.py b/backend/open_webui/migrations/versions/a749ab2aa953_add_memory_user_id_index.py new file mode 100644 index 0000000000..6a54d8d27b --- /dev/null +++ b/backend/open_webui/migrations/versions/a749ab2aa953_add_memory_user_id_index.py @@ -0,0 +1,26 @@ +"""Add index on memory.user_id + +Revision ID: a749ab2aa953 +Revises: c1d2e3f4a5b6 +Create Date: 2026-04-17 00:00:00.000000 + +""" + +from alembic import op +import sqlalchemy as sa + +revision = 'a749ab2aa953' +down_revision = 'c1d2e3f4a5b6' +branch_labels = None +depends_on = None + + +def upgrade(): + # Memory.user_id is filtered on every per-user query + # (get_memories_by_user_id, delete_memories_by_user_id), + # so a btree index prevents full-table scans as the table grows. + op.create_index('memory_user_id_idx', 'memory', ['user_id']) + + +def downgrade(): + op.drop_index('memory_user_id_idx', table_name='memory') diff --git a/backend/open_webui/models/memories.py b/backend/open_webui/models/memories.py index e956826800..1ec52eeb6a 100644 --- a/backend/open_webui/models/memories.py +++ b/backend/open_webui/models/memories.py @@ -19,7 +19,7 @@ class Memory(Base): __tablename__ = 'memory' id = Column(String, primary_key=True, unique=True) - user_id = Column(String) + user_id = Column(String, index=True) content = Column(Text) updated_at = Column(BigInteger) created_at = Column(BigInteger)