Optimize latest completed accounting bucket lookup

This commit is contained in:
Ben
2026-06-08 18:49:30 -04:00
parent f259af947e
commit a693501648
@@ -258,19 +258,22 @@ export class ShareAccountingService implements OnModuleDestroy {
} }
const rows = await this.acceptedShareRepository.query(` const rows = await this.acceptedShareRepository.query(`
WITH clock AS ( WITH clock AS MATERIALIZED (
SELECT SELECT
time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket" time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket"
), ),
bounds AS ( latest_bucket AS MATERIALIZED (
SELECT "bucket"
FROM "accepted_share_10m", clock
WHERE "bucket" < clock."currentBucket"
ORDER BY "bucket" DESC
LIMIT 1
),
bounds AS MATERIALIZED (
SELECT SELECT
"currentBucket", "currentBucket",
COALESCE( COALESCE(
( (SELECT "bucket" FROM latest_bucket),
SELECT MAX("bucket")
FROM "accepted_share_10m", clock
WHERE "bucket" < clock."currentBucket"
),
"currentBucket" - INTERVAL '10 minutes' "currentBucket" - INTERVAL '10 minutes'
) AS "latestCompletedBucket" ) AS "latestCompletedBucket"
FROM clock FROM clock
@@ -353,19 +356,22 @@ export class ShareAccountingService implements OnModuleDestroy {
private async loadSummary(filter: AccountingFilter): Promise<ShareAccountingSummary> { private async loadSummary(filter: AccountingFilter): Promise<ShareAccountingSummary> {
const { whereSql, params } = this.buildWhereClause(filter); const { whereSql, params } = this.buildWhereClause(filter);
const [summary] = await this.acceptedShareRepository.query(` const [summary] = await this.acceptedShareRepository.query(`
WITH clock AS ( WITH clock AS MATERIALIZED (
SELECT SELECT
time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket" time_bucket(INTERVAL '10 minutes', NOW()) AS "currentBucket"
), ),
bounds AS ( latest_bucket AS MATERIALIZED (
SELECT "bucket"
FROM "accepted_share_10m", clock
WHERE "bucket" < clock."currentBucket"
ORDER BY "bucket" DESC
LIMIT 1
),
bounds AS MATERIALIZED (
SELECT SELECT
"currentBucket", "currentBucket",
COALESCE( COALESCE(
( (SELECT "bucket" FROM latest_bucket),
SELECT MAX("bucket")
FROM "accepted_share_10m", clock
WHERE "bucket" < clock."currentBucket"
),
"currentBucket" - INTERVAL '10 minutes' "currentBucket" - INTERVAL '10 minutes'
) AS "latestCompletedBucket" ) AS "latestCompletedBucket"
FROM clock FROM clock