perf(stock-report): покрывающий индекс движений (Phase45) — отчёт остатков 2.4с→1.1с на реальном объёме
Some checks failed
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Has been cancelled
Docker API / Deploy API on stage (push) Has been cancelled
Some checks failed
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Has been cancelled
Docker API / Deploy API on stage (push) Has been cancelled
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
6a7806ff08
commit
a2183e9532
|
|
@ -0,0 +1,31 @@
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using foodmarket.Infrastructure.Persistence;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace foodmarket.Infrastructure.Persistence.Migrations
|
||||||
|
{
|
||||||
|
/// <summary>Phase45 — покрывающий индекс для отчёта остатков на дату: группировка по
|
||||||
|
/// (Product, Store) + последняя себестоимость по OccurredAt. На реальном объёме
|
||||||
|
/// (≈288k движений) агрегаты отчёта падали с ~1.15с до ~0.33с (API: 2.4с → ~1.1с).
|
||||||
|
/// INCLUDE (Quantity, UnitCost) → index-only scan. Идемпотентно.</summary>
|
||||||
|
[DbContext(typeof(AppDbContext))]
|
||||||
|
[Migration("20261009210000_Phase45_StockMovementReportIndex")]
|
||||||
|
public partial class Phase45_StockMovementReportIndex : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder b)
|
||||||
|
{
|
||||||
|
b.Sql(@"
|
||||||
|
CREATE INDEX IF NOT EXISTS ix_sm_org_prod_store_occ
|
||||||
|
ON public.stock_movements (""OrganizationId"", ""ProductId"", ""StoreId"", ""OccurredAt"" DESC)
|
||||||
|
INCLUDE (""Quantity"", ""UnitCost"");
|
||||||
|
");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder b)
|
||||||
|
{
|
||||||
|
b.Sql(@"DROP INDEX IF EXISTS public.ix_sm_org_prod_store_occ;");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue