From 1f9c3dd2f466858774628cb3efeadfbdeb580a3e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 5 Oct 2026 21:08:20 +0200 Subject: [PATCH] Task/improve performance of latest market data (#8059) * Improve performance of latest market data * Update changelog --- CHANGELOG.md | 1 + apps/api/src/services/market-data/market-data.service.ts | 2 +- .../queues/data-gathering/data-gathering.service.ts | 2 +- .../migration.sql | 8 ++++++++ prisma/schema.prisma | 3 +-- 5 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 prisma/migrations/20261005000000_updated_indexes_of_market_data/migration.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index 366727022c..a1fdd458a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the performance of getting the latest market data by optimizing the indexes of the market data table - Deprecated `SymbolProfile` in favor of `assetProfile` in the endpoint `POST api/v1/activities` - Upgraded `Nx` from version `23.1.1` to `23.2.1` diff --git a/apps/api/src/services/market-data/market-data.service.ts b/apps/api/src/services/market-data/market-data.service.ts index e608decca2..c1a31ce815 100644 --- a/apps/api/src/services/market-data/market-data.service.ts +++ b/apps/api/src/services/market-data/market-data.service.ts @@ -248,7 +248,7 @@ export class MarketDataService { state: state as MarketDataState }, where: { - dataSource_date_symbol: { + dataSource_symbol_date: { dataSource: dataSource as DataSource, date: date as Date, symbol: symbol as string diff --git a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts index 1162143421..2897855b01 100644 --- a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts @@ -348,7 +348,7 @@ export class DataGatheringService { }, update: { marketPrice, isCarriedForward: false }, where: { - dataSource_date_symbol: { + dataSource_symbol_date: { dataSource, symbol, date: startOfUtcDate diff --git a/prisma/migrations/20261005000000_updated_indexes_of_market_data/migration.sql b/prisma/migrations/20261005000000_updated_indexes_of_market_data/migration.sql new file mode 100644 index 0000000000..4dc77ce0ff --- /dev/null +++ b/prisma/migrations/20261005000000_updated_indexes_of_market_data/migration.sql @@ -0,0 +1,8 @@ +-- CreateIndex +CREATE UNIQUE INDEX "MarketData_dataSource_symbol_date_key" ON "MarketData"("dataSource", "symbol", "date"); + +-- DropIndex +DROP INDEX "MarketData_dataSource_symbol_idx"; + +-- DropIndex +DROP INDEX "MarketData_dataSource_date_symbol_key"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index d2181e13be..37a3506610 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -173,9 +173,8 @@ model MarketData { state MarketDataState @default(CLOSE) symbol String - @@unique([dataSource, date, symbol]) + @@unique([dataSource, symbol, date]) @@index([dataSource]) - @@index([dataSource, symbol]) @@index([date]) @@index([state]) @@index([symbol])