From 6fe335f843d6726cf43075d8014a16644afb34e2 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Wed, 4 Jun 2025 10:40:07 -0400 Subject: [PATCH] fix performance drop in notes/mentions endpoint --- .../backend/src/server/api/endpoints/notes/mentions.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/notes/mentions.ts b/packages/backend/src/server/api/endpoints/notes/mentions.ts index 7c54bc69ab..4a3454c36f 100644 --- a/packages/backend/src/server/api/endpoints/notes/mentions.ts +++ b/packages/backend/src/server/api/endpoints/notes/mentions.ts @@ -64,9 +64,9 @@ export default class extends Endpoint { // eslint- const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) .andWhere(new Brackets(qb => qb - .orWhere(':meId = ANY (note.mentions)') - .orWhere(':meId = ANY (note.visibleUserIds)'))) - .setParameters({ meId: me.id }) + .where(':meIdAsList <@ note.mentions') + .orWhere(':meIdAsList <@ note.visibleUserIds'))) + .setParameters({ meIdAsList: [me.id] }) // Avoid scanning primary key index .orderBy('CONCAT(note.id)', 'DESC') .innerJoinAndSelect('note.user', 'user') @@ -80,7 +80,8 @@ export default class extends Endpoint { // eslint- this.queryService.generateMutedUserQueryForNotes(query, me); this.queryService.generateMutedNoteThreadQuery(query, me); this.queryService.generateBlockedUserQueryForNotes(query, me); - this.queryService.generateMutedUserRenotesQueryForNotes(query, me); + // A renote can't mention a user, so it will never appear here anyway. + //this.queryService.generateMutedUserRenotesQueryForNotes(query, me); if (ps.visibility) { query.andWhere('note.visibility = :visibility', { visibility: ps.visibility });