Есть две таблицы A и B.
A
@Column({
type: DataType.UUID,
defaultValue: UUIDV4,
primaryKey: true,
unique: true,
allowNull: false
})
id: string;
@Column({
type: DataType.INTEGER,
allowNull: false,
defaultValue: StatusEnum.PENDING
})
status: StatusEnum;
B
@Column({
type: DataType.UUID,
defaultValue: UUIDV4,
primaryKey: true,
unique: true,
allowNull: false
})
id: string;
@Index('time')
@Column({
type: DataType.DATE,
allowNull: false
})
time: Date;
@Column({
type: DataType.FLOAT,
allowNull: false
})
value: number;
@ForeignKey(() => ATable)
a_id: string
Я думаю не привязываясь к языку программирования суть ясна - в таблице A поля id и status, в таблице B поля id, time, value и a_id
A has many B
В таблице B порядка 5.000.000 (размер ~1гб)
Использую ORM, но даже простой
SELECT * FROM b WHERE a_id='123' ORDER BY time DESC;
Выполняется 0.3c - 1c в зависимости от количества строк в ответе. Так же очень медленно выполняется INSERT. Почитав с какими объёмами работают другие пользователи понял, что что-то явно не так.
Вопрос: ускоряет ли index операцию ORDER BY, и в чем вообще может быть проблема? Настройки, железо, или я неправильно использую index?