diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-06-04 10:40:07 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-06-04 10:40:07 -0400 |
| commit | 6fe335f843d6726cf43075d8014a16644afb34e2 (patch) | |
| tree | 1aef6a75790464e4afc04144c642df2ec16f340d /packages | |
| parent | merge: Rework queries and add indexes to improve timeline performance (!1091) (diff) | |
| download | sharkey-6fe335f843d6726cf43075d8014a16644afb34e2.tar.gz sharkey-6fe335f843d6726cf43075d8014a16644afb34e2.tar.bz2 sharkey-6fe335f843d6726cf43075d8014a16644afb34e2.zip | |
fix performance drop in notes/mentions endpoint
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/mentions.ts | 9 |
1 files 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<typeof meta, typeof paramDef> { // 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<typeof meta, typeof paramDef> { // 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 }); |