perf(backend): optimize drive/files query for old root content

This commit is contained in:
caipira113 2025-09-04 00:02:53 +09:00
parent 6e3354f95d
commit 4ec9c3ea73
No known key found for this signature in database
2 changed files with 20 additions and 0 deletions

View File

@ -0,0 +1,19 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
export class OptimizeDriveFilesQuery1756824506000 {
name = 'OptimizeDriveFilesQuery1756824506000'
async up(queryRunner) {
// Create optimized partial index for drive files query performance
// This index is specifically designed for the common query pattern:
// SELECT * FROM drive_file WHERE userId = ? AND folderId IS NULL ORDER BY id DESC
await queryRunner.query(`CREATE INDEX "IDX_drive_file_userid_null_folderid_id_desc" ON "drive_file" ("userId", ("folderId" IS NULL), "id" DESC)`);
}
async down(queryRunner) {
await queryRunner.query(`DROP INDEX "IDX_drive_file_userid_null_folderid_id_desc"`);
}
}

View File

@ -10,6 +10,7 @@ import { MiDriveFolder } from './DriveFolder.js';
@Entity('drive_file') @Entity('drive_file')
@Index(['userId', 'folderId', 'id']) @Index(['userId', 'folderId', 'id'])
@Index('IDX_drive_file_userid_null_folderid_id_desc', { synchronize: false })
export class MiDriveFile { export class MiDriveFile {
@PrimaryColumn(id()) @PrimaryColumn(id())
public id: string; public id: string;