Optimize index sizes
This commit is contained in:
parent
2f5c6b2fc6
commit
439b1744f5
|
@ -16,7 +16,7 @@ let config: IConfig = require('config')
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
const LAST_MIGRATION_VERSION = 305
|
const LAST_MIGRATION_VERSION = 310
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
import * as Sequelize from 'sequelize'
|
||||||
|
|
||||||
|
async function up (utils: {
|
||||||
|
transaction: Sequelize.Transaction,
|
||||||
|
queryInterface: Sequelize.QueryInterface,
|
||||||
|
sequelize: Sequelize.Sequelize,
|
||||||
|
db: any
|
||||||
|
}): Promise<void> {
|
||||||
|
const indexNames = [
|
||||||
|
'video_category',
|
||||||
|
'video_licence',
|
||||||
|
'video_nsfw',
|
||||||
|
'video_language',
|
||||||
|
'video_wait_transcoding',
|
||||||
|
'video_state',
|
||||||
|
'video_remote',
|
||||||
|
'video_likes'
|
||||||
|
]
|
||||||
|
|
||||||
|
for (const indexName of indexNames) {
|
||||||
|
await utils.sequelize.query('DROP INDEX IF EXISTS "' + indexName + '";')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function down (options) {
|
||||||
|
throw new Error('Not implemented.')
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
up,
|
||||||
|
down
|
||||||
|
}
|
|
@ -102,16 +102,44 @@ const indexes: Sequelize.DefineIndexesOptions[] = [
|
||||||
{ fields: [ 'createdAt' ] },
|
{ fields: [ 'createdAt' ] },
|
||||||
{ fields: [ 'publishedAt' ] },
|
{ fields: [ 'publishedAt' ] },
|
||||||
{ fields: [ 'duration' ] },
|
{ fields: [ 'duration' ] },
|
||||||
{ fields: [ 'category' ] },
|
|
||||||
{ fields: [ 'licence' ] },
|
|
||||||
{ fields: [ 'nsfw' ] },
|
|
||||||
{ fields: [ 'language' ] },
|
|
||||||
{ fields: [ 'waitTranscoding' ] },
|
|
||||||
{ fields: [ 'state' ] },
|
|
||||||
{ fields: [ 'remote' ] },
|
|
||||||
{ fields: [ 'views' ] },
|
{ fields: [ 'views' ] },
|
||||||
{ fields: [ 'likes' ] },
|
|
||||||
{ fields: [ 'channelId' ] },
|
{ fields: [ 'channelId' ] },
|
||||||
|
{
|
||||||
|
fields: [ 'category' ], // We don't care videos with an unknown category
|
||||||
|
where: {
|
||||||
|
category: {
|
||||||
|
[Sequelize.Op.ne]: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: [ 'licence' ], // We don't care videos with an unknown licence
|
||||||
|
where: {
|
||||||
|
licence: {
|
||||||
|
[Sequelize.Op.ne]: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: [ 'language' ], // We don't care videos with an unknown language
|
||||||
|
where: {
|
||||||
|
language: {
|
||||||
|
[Sequelize.Op.ne]: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: [ 'nsfw' ], // Most of the videos are not NSFW
|
||||||
|
where: {
|
||||||
|
nsfw: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: [ 'remote' ], // Only index local videos
|
||||||
|
where: {
|
||||||
|
remote: false
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fields: [ 'uuid' ],
|
fields: [ 'uuid' ],
|
||||||
unique: true
|
unique: true
|
||||||
|
|
Loading…
Reference in New Issue
Block a user