[GH-ISSUE #15046] feat: Indexing to improve performance #56115

Closed
opened 2026-05-05 18:43:58 -05:00 by GiteaMirror · 13 comments
Owner

Originally created by @decent-engineer-decent-datascientist on GitHub (Jun 16, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/15046

Check Existing Issues

  • I have searched the existing issues and discussions.

Problem Description

When using Open-WebUI with a SQLite or pSQL backend, database queries (such as filtering, sorting, and joining) can become noticeably slow as data grows, particularly for common tables (e.g., chat, tag, function).

Currently, not indexes are created by default. Indexes that would drastically improve performance must be created manually. Many users may not be aware of best practices for index creation or which queries would benefit most.

Desired Solution you'd like

Automatically create indexes for databases upon initial setup or first use of key tables. Example indices include:

Index Name Fields Impacted Matches Queries Like… What It Improves Tested Improvement % Create Index Query
folder_id_idx chat(folder_id) WHERE folder_id = ... Fast lookup of all chats in a folder 99% CREATE INDEX folder_id_idx ON chat(folder_id);
user_id_idx tag(user_id) WHERE user_id = ... Quickly find all tags for a user 35% / 33% CREATE INDEX user_id_idx ON tag(user_id);
user_id_pinned_idx chat(user_id, pinned) WHERE user_id = ... AND pinned = ... Efficient user & pinned chat filtering 99% CREATE INDEX user_id_pinned_idx ON chat(user_id, pinned);
updated_at_user_id_idx chat(updated_at, user_id) WHERE user_id = ... ORDER BY updated_at DESC Fast per-user chat listing sorted by update time 83% CREATE INDEX updated_at_user_id_idx ON chat(updated_at, user_id);
user_id_archived_idx chat(user_id, archived) WHERE user_id = ... AND archived = ... Efficient per-user archived/unarchived lookups 91% CREATE INDEX user_id_archived_idx ON chat(user_id, archived);
is_global_idx function(is_global) WHERE is_global = ... Fast global/non-global function filtering 50% CREATE INDEX is_global_idx ON function(is_global);
folder_id_user_id_idx chat(folder_id, user_id) WHERE folder_id = ... AND user_id = ... Quicker lookup for chat folders by user 99% CREATE INDEX folder_id_user_id_idx ON chat(folder_id, user_id);

Alternatives Considered

  • Manual Index Creation: Users can create indexes themselves, but this requires SQL/database knowledge and the ability to identify slow queries, which can be a barrier for some users.
  • Documentation: Providing clear documentation or setup guides listing suggested indexes for SQLite could help, but it’s less user-friendly than automating or recommending them directly within the app.

Additional Context

I recently analyzed query logs for a PostgreSQL deployment and found that similar indexes provide major performance boosts on SQLite as well. Given the overlap in SQL functionality, this feature would make Open-WebUI more performant "out-of-the-box" for SQLite users (who may be on resource-limited systems). Additionally, automated index management would help less-technical users avoid sluggishness as their dataset grows.

It would be as simple as doing this for new instances:

backend/open_webui/models/chats.py:

class Chat(Base):
    __tablename__ = "chat"

    id = Column(String, primary_key=True)
    user_id = Column(String)
    title = Column(Text)
    chat = Column(JSON)

    created_at = Column(BigInteger)
    updated_at = Column(BigInteger)

    share_id = Column(Text, unique=True, nullable=True)
    archived = Column(Boolean, default=False)
    pinned = Column(Boolean, default=False, nullable=True)

    meta = Column(JSON, server_default="{}")
    folder_id = Column(Text, nullable=True)

    __table_args__ = (
        Index('idx_chat_user_id_pinned', 'user_id', 'pinned'),
        Index('idx_chat_user_id_archived', 'user_id', 'archived'),
        Index('idx_chat_folder_id', 'folder_id'),
        Index('idx_chat_folder_id_user_id', 'folder_id', 'user_id'),
        Index('idx_chat_updated_at_user_id', 'updated_at', 'user_id'),
    )
Originally created by @decent-engineer-decent-datascientist on GitHub (Jun 16, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/15046 ### Check Existing Issues - [x] I have searched the existing issues and discussions. ### Problem Description When using Open-WebUI with a SQLite or pSQL backend, database queries (such as filtering, sorting, and joining) can become noticeably slow as data grows, particularly for common tables (e.g., chat, tag, function). Currently, not indexes are created by default. Indexes that would drastically improve performance must be created manually. Many users may not be aware of best practices for index creation or which queries would benefit most. ### Desired Solution you'd like Automatically create indexes for databases upon initial setup or first use of key tables. Example indices include: | **Index Name** | **Fields Impacted** | **Matches Queries Like…** | **What It Improves** | **Tested Improvement %** | **Create Index Query** | |----------------------------------|-------------------------|---------------------------------------------------------------|--------------------------------------------------|-------------------|-------------------------------------------| | folder_id_idx | chat(folder_id) | `WHERE folder_id = ...` | Fast lookup of all chats in a folder | 99% | `CREATE INDEX folder_id_idx ON chat(folder_id);` | | user_id_idx | tag(user_id) | `WHERE user_id = ...` | Quickly find all tags for a user | 35% / 33% | `CREATE INDEX user_id_idx ON tag(user_id);` | | user_id_pinned_idx | chat(user_id, pinned) | `WHERE user_id = ... AND pinned = ...` | Efficient user & pinned chat filtering | 99% | `CREATE INDEX user_id_pinned_idx ON chat(user_id, pinned);`| | updated_at_user_id_idx | chat(updated_at, user_id)| `WHERE user_id = ... ORDER BY updated_at DESC` | Fast per-user chat listing sorted by update time | 83% | `CREATE INDEX updated_at_user_id_idx ON chat(updated_at, user_id);`| | user_id_archived_idx | chat(user_id, archived) | `WHERE user_id = ... AND archived = ...` | Efficient per-user archived/unarchived lookups | 91% | `CREATE INDEX user_id_archived_idx ON chat(user_id, archived);` | | is_global_idx | function(is_global) | `WHERE is_global = ...` | Fast global/non-global function filtering | 50% | `CREATE INDEX is_global_idx ON function(is_global);` | | folder_id_user_id_idx | chat(folder_id, user_id)| `WHERE folder_id = ... AND user_id = ...` | Quicker lookup for chat folders by user | 99% | `CREATE INDEX folder_id_user_id_idx ON chat(folder_id, user_id);` | ### Alternatives Considered - Manual Index Creation: Users can create indexes themselves, but this requires SQL/database knowledge and the ability to identify slow queries, which can be a barrier for some users. - Documentation: Providing clear documentation or setup guides listing suggested indexes for SQLite could help, but it’s less user-friendly than automating or recommending them directly within the app. ### Additional Context I recently analyzed query logs for a PostgreSQL deployment and found that similar indexes provide major performance boosts on SQLite as well. Given the overlap in SQL functionality, this feature would make Open-WebUI more performant "out-of-the-box" for SQLite users (who may be on resource-limited systems). Additionally, automated index management would help less-technical users avoid sluggishness as their dataset grows. It would be as simple as doing this for new instances: backend/open_webui/models/chats.py: ```python class Chat(Base): __tablename__ = "chat" id = Column(String, primary_key=True) user_id = Column(String) title = Column(Text) chat = Column(JSON) created_at = Column(BigInteger) updated_at = Column(BigInteger) share_id = Column(Text, unique=True, nullable=True) archived = Column(Boolean, default=False) pinned = Column(Boolean, default=False, nullable=True) meta = Column(JSON, server_default="{}") folder_id = Column(Text, nullable=True) __table_args__ = ( Index('idx_chat_user_id_pinned', 'user_id', 'pinned'), Index('idx_chat_user_id_archived', 'user_id', 'archived'), Index('idx_chat_folder_id', 'folder_id'), Index('idx_chat_folder_id_user_id', 'folder_id', 'user_id'), Index('idx_chat_updated_at_user_id', 'updated_at', 'user_id'), ) ```
Author
Owner

@decent-engineer-decent-datascientist commented on GitHub (Jun 16, 2025):

Happy to open a PR on this, with the indices I've tested. That being said, @tjbck, seeing as there are no indices in the models right now, I don't want to commit work that goes against any design decisions.

<!-- gh-comment-id:2978491770 --> @decent-engineer-decent-datascientist commented on GitHub (Jun 16, 2025): Happy to open a PR on this, with the indices I've tested. That being said, @tjbck, seeing as there are no indices in the models right now, I don't want to commit work that goes against any design decisions.
Author
Owner

@decent-engineer-decent-datascientist commented on GitHub (Jun 19, 2025):

If we're interested, I've added PR #15155

<!-- gh-comment-id:2989339795 --> @decent-engineer-decent-datascientist commented on GitHub (Jun 19, 2025): If we're interested, I've added PR #15155
Author
Owner

@richard-a-adams commented on GitHub (Jul 3, 2025):

Hi,

Thanks for suggesting these improvements. Am I able to create these indexes on an already existing postgreSQL db and get these performance improvements? Or does it require further code changes to the interface to get any benefits?

Not too familiar with DBs as a whole so thanks for any information you can provide.

<!-- gh-comment-id:3030142210 --> @richard-a-adams commented on GitHub (Jul 3, 2025): Hi, Thanks for suggesting these improvements. Am I able to create these indexes on an already existing postgreSQL db and get these performance improvements? Or does it require further code changes to the interface to get any benefits? Not too familiar with DBs as a whole so thanks for any information you can provide.
Author
Owner

@decent-engineer-decent-datascientist commented on GitHub (Jul 3, 2025):

If you apply the indices properly, no code changes need to happen. Make a
backup.

On Wed, Jul 2, 2025 at 8:46 PM Richard-Adams @.***>
wrote:

richard-a-adams left a comment (open-webui/open-webui#15046)
https://github.com/open-webui/open-webui/issues/15046#issuecomment-3030142210

Hi,

Thanks for suggesting these improvements. Am I able to create these
indexes on an already existing postgreSQL db and get these performance
improvements? Or does it require further code changes to the interface to
get any benefits?

Not too familiar with DBs as a whole so thanks for any information you can
provide.


Reply to this email directly, view it on GitHub
https://github.com/open-webui/open-webui/issues/15046#issuecomment-3030142210,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASRTZN3UBH357FD4LV64V3D3GSDQRAVCNFSM6AAAAAB7OURGXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTAMZQGE2DEMRRGA
.
You are receiving this because you authored the thread.Message ID:
@.***>

<!-- gh-comment-id:3030151195 --> @decent-engineer-decent-datascientist commented on GitHub (Jul 3, 2025): If you apply the indices properly, no code changes need to happen. Make a backup. On Wed, Jul 2, 2025 at 8:46 PM Richard-Adams ***@***.***> wrote: > *richard-a-adams* left a comment (open-webui/open-webui#15046) > <https://github.com/open-webui/open-webui/issues/15046#issuecomment-3030142210> > > Hi, > > Thanks for suggesting these improvements. Am I able to create these > indexes on an already existing postgreSQL db and get these performance > improvements? Or does it require further code changes to the interface to > get any benefits? > > Not too familiar with DBs as a whole so thanks for any information you can > provide. > > — > Reply to this email directly, view it on GitHub > <https://github.com/open-webui/open-webui/issues/15046#issuecomment-3030142210>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/ASRTZN3UBH357FD4LV64V3D3GSDQRAVCNFSM6AAAAAB7OURGXGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTAMZQGE2DEMRRGA> > . > You are receiving this because you authored the thread.Message ID: > ***@***.***> >
Author
Owner

@richard-a-adams commented on GitHub (Jul 3, 2025):

Great, thanks.

Would you be able to provide any advice or guidance on how to apple the indices properly?

Of course making a backup before doing these changes is the first step but anything after that?

<!-- gh-comment-id:3030166743 --> @richard-a-adams commented on GitHub (Jul 3, 2025): Great, thanks. Would you be able to provide any advice or guidance on how to apple the indices properly? Of course making a backup before doing these changes is the first step but anything after that?
Author
Owner

@spammenotinoz commented on GitHub (Jul 25, 2025):

Thank-you this helped dramatically, do you have any other index suggestions to help workspace functions such as models, knowledge and prompts?

<!-- gh-comment-id:3117494112 --> @spammenotinoz commented on GitHub (Jul 25, 2025): Thank-you this helped dramatically, do you have any other index suggestions to help workspace functions such as models, knowledge and prompts?
Author
Owner

@AsianDesignMajor commented on GitHub (Aug 9, 2025):

If you apply the indices properly, no code changes need to happen. Make a backup.

@decent-engineer-decent-datascientist Are the compound indexes the only way to do this? I'm no expert at indexes, but I would think applying single-field indexes would keep the sizes down - it appears you're indexing the same field in more than one place. Would the speed improvement really change all that much (I'm going to apply this to a PSQL back-end)?

So, would it be OK, for example, to do:

CREATE INDEX chat_folder_id_idx ON chat(folder_id);
CREATE INDEX chat_user_id_idx ON chat(user_id);
CREATE INDEX chat_pinned_idx ON chat(pinned);
CREATE INDEX chat_updated_at_idx ON chat(updated_at);
CREATE INDEX chat_archived_idx ON chat(archived);
 
CREATE INDEX tag_user_id_idx ON tag(user_id);
 
CREATE INDEX function_is_global_idx ON function(is_global);

I'm also curious if there's other tables / fields that are in the OWUI code as frequent join conditions, that could benefit from an index long-term (like, for example, indexing user_id across any tables with that field, as I would think joining user_id between certain tables in OWUI queries would be a "given" if a table has that field in it - like the "function" table, probably others.)

EDIT 2: I went through the tables and added indexes on user_id in any table that has that field, so would this be OK, you think, in addition to the ones above?

CREATE INDEX channel_user_id_idx ON public.channel(user_id);
CREATE INDEX channel_member_user_id_idx ON public.channel_member(user_id);
CREATE INDEX chatidtag_user_id_idx ON public.chatidtag(user_id);
CREATE INDEX document_user_id_idx ON public.document(user_id);
CREATE INDEX feedback_user_id_idx ON public.feedback(user_id);
CREATE INDEX file_user_id_idx ON public.file(user_id);
CREATE INDEX folder_user_id_idx ON public.folder(user_id);
CREATE INDEX function_user_id_idx ON public.function(user_id);
CREATE INDEX group_user_id_idx ON public.group(user_id);
CREATE INDEX knowledge_user_id_idx ON public.knowledge(user_id);
CREATE INDEX memory_user_id_idx ON public.memory(user_id);
CREATE INDEX message_user_id_idx ON public.message(user_id);
CREATE INDEX message_reaction_user_id_idx ON public.message_reaction(user_id);
CREATE INDEX model_user_id_idx ON public.model(user_id);
CREATE INDEX note_user_id_idx ON public.note(user_id);
CREATE INDEX prompt_user_id_idx ON public.prompt(user_id);
CREATE INDEX tool_user_id_idx ON public.tool(user_id);
<!-- gh-comment-id:3170635561 --> @AsianDesignMajor commented on GitHub (Aug 9, 2025): > If you apply the indices properly, no code changes need to happen. Make a backup. > […](#) @decent-engineer-decent-datascientist Are the compound indexes the only way to do this? I'm no expert at indexes, but I would think applying single-field indexes would keep the sizes down - it appears you're indexing the same field in more than one place. Would the speed improvement really change all that much (I'm going to apply this to a PSQL back-end)? So, would it be OK, for example, to do: ``` CREATE INDEX chat_folder_id_idx ON chat(folder_id); CREATE INDEX chat_user_id_idx ON chat(user_id); CREATE INDEX chat_pinned_idx ON chat(pinned); CREATE INDEX chat_updated_at_idx ON chat(updated_at); CREATE INDEX chat_archived_idx ON chat(archived);   CREATE INDEX tag_user_id_idx ON tag(user_id);   CREATE INDEX function_is_global_idx ON function(is_global); ``` I'm also curious if there's other tables / fields that are in the OWUI code as frequent join conditions, that could benefit from an index long-term (like, for example, indexing user_id across any tables with that field, as I would think joining user_id between certain tables in OWUI queries would be a "given" if a table has that field in it - like the "function" table, probably others.) EDIT 2: I went through the tables and added indexes on user_id in any table that has that field, so would this be OK, you think, in addition to the ones above? ``` CREATE INDEX channel_user_id_idx ON public.channel(user_id); CREATE INDEX channel_member_user_id_idx ON public.channel_member(user_id); CREATE INDEX chatidtag_user_id_idx ON public.chatidtag(user_id); CREATE INDEX document_user_id_idx ON public.document(user_id); CREATE INDEX feedback_user_id_idx ON public.feedback(user_id); CREATE INDEX file_user_id_idx ON public.file(user_id); CREATE INDEX folder_user_id_idx ON public.folder(user_id); CREATE INDEX function_user_id_idx ON public.function(user_id); CREATE INDEX group_user_id_idx ON public.group(user_id); CREATE INDEX knowledge_user_id_idx ON public.knowledge(user_id); CREATE INDEX memory_user_id_idx ON public.memory(user_id); CREATE INDEX message_user_id_idx ON public.message(user_id); CREATE INDEX message_reaction_user_id_idx ON public.message_reaction(user_id); CREATE INDEX model_user_id_idx ON public.model(user_id); CREATE INDEX note_user_id_idx ON public.note(user_id); CREATE INDEX prompt_user_id_idx ON public.prompt(user_id); CREATE INDEX tool_user_id_idx ON public.tool(user_id); ```
Author
Owner

@ivanbaldo commented on GitHub (Aug 11, 2025):

@AsianDesignMajor no, multiple column indexes are a good thing if done right, and in many cases is what you really want to do.

This is an excellent resource to understand these things https://use-the-index-luke.com/ if you are interested.

Thanks!!!

<!-- gh-comment-id:3175316605 --> @ivanbaldo commented on GitHub (Aug 11, 2025): @AsianDesignMajor no, multiple column indexes are a good thing if done right, and in many cases is what you really want to do. This is an excellent resource to understand these things https://use-the-index-luke.com/ if you are interested. Thanks!!!
Author
Owner

@hheydaroff commented on GitHub (Nov 19, 2025):

This is what is needed on OpenWebUI. The backend implementation requires a major upgrade. Is there any follow up plan on this? For the cases where multiple users are onboarded, it becomes a bottleneck for performance.

<!-- gh-comment-id:3551470350 --> @hheydaroff commented on GitHub (Nov 19, 2025): This is what is needed on OpenWebUI. The backend implementation requires a major upgrade. Is there any follow up plan on this? For the cases where multiple users are onboarded, it becomes a bottleneck for performance.
Author
Owner

@tjbck commented on GitHub (Nov 21, 2025):

This was added a long time ago.

<!-- gh-comment-id:3562208482 --> @tjbck commented on GitHub (Nov 21, 2025): This was added a long time ago.
Author
Owner

@hheydaroff commented on GitHub (Nov 21, 2025):

Excuse me, my bad. I had not properly checked the PR. It has not solved the issues though. Current implementation covers only high-impact compound indexes but leaves single-column indexes on frequently-queried fields unindexed:

  • 16 additional tables with user_id columns used in frequent join operations
  • Additional high-impact columns in function and model tables not yet indexed
  • Potential performance gaps for users, especially on PostgreSQL deployments

i.e. from a reddit post:

CREATE INDEX IF NOT EXISTS channel_member_user_id_idx ON public.channel_member(user_id);
CREATE INDEX IF NOT EXISTS channel_user_id_idx ON public.channel(user_id);
CREATE INDEX IF NOT EXISTS chat_archived_idx ON public.chat(archived);
CREATE INDEX IF NOT EXISTS chat_folder_id_idx ON public.chat(folder_id);
CREATE INDEX IF NOT EXISTS chat_pinned_idx ON public.chat(pinned);
CREATE INDEX IF NOT EXISTS chat_updated_at_idx ON public.chat(updated_at);
CREATE INDEX IF NOT EXISTS chat_user_id_idx ON public.chat(user_id);
CREATE INDEX IF NOT EXISTS chatidtag_user_id_idx ON public.chatidtag(user_id);
CREATE INDEX IF NOT EXISTS document_user_id_idx ON public.document(user_id);
CREATE INDEX IF NOT EXISTS feedback_user_id_idx ON public.feedback(user_id);
CREATE INDEX IF NOT EXISTS file_user_id_idx ON public.file(user_id);
CREATE INDEX IF NOT EXISTS folder_user_id_idx ON public.folder(user_id);
CREATE INDEX IF NOT EXISTS function_is_active_idx ON public.function(is_active);
CREATE INDEX IF NOT EXISTS function_type_idx ON public.function(type);
CREATE INDEX IF NOT EXISTS function_user_id_idx ON public.function(user_id);
CREATE INDEX IF NOT EXISTS group_user_id_idx ON public.group(user_id);
CREATE INDEX IF NOT EXISTS knowledge_user_id_idx ON public.knowledge(user_id);
CREATE INDEX IF NOT EXISTS memory_user_id_idx ON public.memory(user_id);
CREATE INDEX IF NOT EXISTS message_reaction_user_id_idx ON public.message_reaction(user_id);
CREATE INDEX IF NOT EXISTS message_user_id_idx ON public.message(user_id);
CREATE INDEX IF NOT EXISTS model_base_model_id_idx ON public.model(base_model_id);
CREATE INDEX IF NOT EXISTS model_user_id_idx ON public.model(user_id);
CREATE INDEX IF NOT EXISTS note_user_id_idx ON public.note(user_id);
CREATE INDEX IF NOT EXISTS prompt_user_id_idx ON public.prompt(user_id);
CREATE INDEX IF NOT EXISTS tag_user_id_idx ON public.tag(user_id);
CREATE INDEX IF NOT EXISTS tool_user_id_idx ON public.tool(user_id);

In general, my feeling is that quite some INDEXes are missing.

<!-- gh-comment-id:3562971765 --> @hheydaroff commented on GitHub (Nov 21, 2025): Excuse me, my bad. I had not properly checked the PR. It has not solved the issues though. Current implementation covers only high-impact compound indexes but leaves single-column indexes on frequently-queried fields unindexed: - 16 additional tables with `user_id` columns used in frequent join operations - Additional high-impact columns in `function` and `model` tables not yet indexed - Potential performance gaps for users, especially on PostgreSQL deployments i.e. from a reddit post: ```sql CREATE INDEX IF NOT EXISTS channel_member_user_id_idx ON public.channel_member(user_id); CREATE INDEX IF NOT EXISTS channel_user_id_idx ON public.channel(user_id); CREATE INDEX IF NOT EXISTS chat_archived_idx ON public.chat(archived); CREATE INDEX IF NOT EXISTS chat_folder_id_idx ON public.chat(folder_id); CREATE INDEX IF NOT EXISTS chat_pinned_idx ON public.chat(pinned); CREATE INDEX IF NOT EXISTS chat_updated_at_idx ON public.chat(updated_at); CREATE INDEX IF NOT EXISTS chat_user_id_idx ON public.chat(user_id); CREATE INDEX IF NOT EXISTS chatidtag_user_id_idx ON public.chatidtag(user_id); CREATE INDEX IF NOT EXISTS document_user_id_idx ON public.document(user_id); CREATE INDEX IF NOT EXISTS feedback_user_id_idx ON public.feedback(user_id); CREATE INDEX IF NOT EXISTS file_user_id_idx ON public.file(user_id); CREATE INDEX IF NOT EXISTS folder_user_id_idx ON public.folder(user_id); CREATE INDEX IF NOT EXISTS function_is_active_idx ON public.function(is_active); CREATE INDEX IF NOT EXISTS function_type_idx ON public.function(type); CREATE INDEX IF NOT EXISTS function_user_id_idx ON public.function(user_id); CREATE INDEX IF NOT EXISTS group_user_id_idx ON public.group(user_id); CREATE INDEX IF NOT EXISTS knowledge_user_id_idx ON public.knowledge(user_id); CREATE INDEX IF NOT EXISTS memory_user_id_idx ON public.memory(user_id); CREATE INDEX IF NOT EXISTS message_reaction_user_id_idx ON public.message_reaction(user_id); CREATE INDEX IF NOT EXISTS message_user_id_idx ON public.message(user_id); CREATE INDEX IF NOT EXISTS model_base_model_id_idx ON public.model(base_model_id); CREATE INDEX IF NOT EXISTS model_user_id_idx ON public.model(user_id); CREATE INDEX IF NOT EXISTS note_user_id_idx ON public.note(user_id); CREATE INDEX IF NOT EXISTS prompt_user_id_idx ON public.prompt(user_id); CREATE INDEX IF NOT EXISTS tag_user_id_idx ON public.tag(user_id); CREATE INDEX IF NOT EXISTS tool_user_id_idx ON public.tool(user_id); ``` In general, my feeling is that quite some `INDEX`es are missing.
Author
Owner

@Classic298 commented on GitHub (Nov 21, 2025):

@hheydaroff

check the dev branch, tim just pushed through a group user table migration for frequently accessed user objects.

please do not use reddit as a source...

<!-- gh-comment-id:3562979764 --> @Classic298 commented on GitHub (Nov 21, 2025): @hheydaroff check the dev branch, tim just pushed through a group user table migration for frequently accessed user objects. please do not use reddit as a source...
Author
Owner

@hheydaroff commented on GitHub (Nov 21, 2025):

@Classic298, will check. thanks for the input!

<!-- gh-comment-id:3563102367 --> @hheydaroff commented on GitHub (Nov 21, 2025): @Classic298, will check. thanks for the input!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#56115