Implemented the DB index/query optimization

This commit is contained in:
Dmitri 2026-07-02 10:46:06 +02:00
parent f7219ece35
commit 5be478542d
3 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,36 @@
'use strict';
/**
* Add indexes for runtime transition asset lookups.
*
* Hot paths:
* - assets lookup by storage_key when resolving transition/reversed videos
* - asset_variants join/filter by assetId and variant_type for reversed variants
*/
module.exports = {
async up(queryInterface) {
await queryInterface.sequelize.query(`
CREATE INDEX IF NOT EXISTS assets_storage_key_active
ON assets (storage_key)
WHERE "deletedAt" IS NULL
AND storage_key IS NOT NULL
`);
await queryInterface.sequelize.query(`
CREATE INDEX IF NOT EXISTS asset_variants_asset_id_variant_type_active
ON asset_variants ("assetId", variant_type)
WHERE "deletedAt" IS NULL
`);
},
async down(queryInterface) {
await queryInterface.sequelize.query(`
DROP INDEX IF EXISTS asset_variants_asset_id_variant_type_active
`);
await queryInterface.sequelize.query(`
DROP INDEX IF EXISTS assets_storage_key_active
`);
},
};

View File

@ -89,6 +89,13 @@ const defineAssetVariantsModel: SequelizeModelFactory = (
timestamps: true, timestamps: true,
paranoid: true, paranoid: true,
freezeTableName: true, freezeTableName: true,
indexes: [
{
fields: ['assetId', 'variant_type'],
name: 'asset_variants_asset_id_variant_type_active',
where: { deletedAt: null },
},
],
}, },
); );

View File

@ -1,3 +1,5 @@
import { Op } from 'sequelize';
import type { import type {
SequelizeModel, SequelizeModel,
SequelizeModelFactory, SequelizeModelFactory,
@ -133,6 +135,16 @@ const defineAssetsModel: SequelizeModelFactory = (sequelize, DataTypes) => {
freezeTableName: true, freezeTableName: true,
indexes: [ indexes: [
{ fields: ['projectId'] }, { fields: ['projectId'] },
{
fields: ['storage_key'],
name: 'assets_storage_key_active',
where: {
deletedAt: null,
storage_key: {
[Op.ne]: null,
},
},
},
{ fields: ['asset_type'] }, { fields: ['asset_type'] },
{ fields: ['type'] }, { fields: ['type'] },
{ fields: ['is_public'] }, { fields: ['is_public'] },