From 3ecf11bb984a27f7b205cd9beec09394c51eec21 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 10 Oct 2026 14:47:07 +0200 Subject: [PATCH] Task/improve performance of historical market data query (#8061) * Improve performance of historical market data query * Update changelog --- CHANGELOG.md | 1 + .../services/data-provider/data-provider.service.ts | 11 +++-------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a98179b3d2..73b61f15c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the benchmark comparator to support benchmarks whose market data starts later than the portfolio - Harmonized the colors in the investment chart component +- Improved the performance of getting the historical market data by loading only the requested asset profiles - Improved the language localization for Chinese (`zh`) ### Fixed diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index cfacab3231..7bd06b1c99 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -403,12 +403,8 @@ export class DataProviderService implements OnModuleInit { })}::timestamp` : Prisma.empty; - const dataSources = aItems.map(({ dataSource }) => { - return dataSource; - }); - - const symbols = aItems.map(({ symbol }) => { - return symbol; + const assetProfileIdentifiers = aItems.map(({ dataSource, symbol }) => { + return Prisma.sql`(${dataSource}::"DataSource", ${symbol})`; }); try { @@ -416,8 +412,7 @@ export class DataProviderService implements OnModuleInit { .$queryRaw` SELECT * FROM "MarketData" - WHERE "dataSource"::text IN (${Prisma.join(dataSources)}) - AND "symbol" IN (${Prisma.join(symbols)}) + WHERE ("dataSource", "symbol") IN (${Prisma.join(assetProfileIdentifiers)}) ${granularityQuery} ${rangeQuery} ORDER BY date;`;