Files
ems/db/migration/V010__indexes.sql
Dusan Vojacek 897b95f728 x
2026-03-20 14:30:03 +01:00

41 lines
1.7 KiB
SQL

-- =============================================================
-- V010__indexes.sql
-- B-tree indexy pro časté dotazy (plán, telemetrie, ceny, audit, EV, režimy).
-- Pozn.: idx_ev_session_active na (charger_id, session_end) je ve V006;
-- zde idx_ev_session_site_active doplňuje vyhledávání aktivní session podle site.
-- =============================================================
-- Planning (control exporter hledá aktivní plán pro aktuální slot)
CREATE INDEX IF NOT EXISTS idx_planning_run_site_status
ON ems.planning_run (site_id, status, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_planning_interval_run_start
ON ems.planning_interval (run_id, interval_start);
-- Telemetrie (dashboard čte poslední hodnoty)
CREATE INDEX IF NOT EXISTS idx_telemetry_inverter_site_time
ON ems.telemetry_inverter (site_id, measured_at DESC);
CREATE INDEX IF NOT EXISTS idx_telemetry_ev_site_time
ON ems.telemetry_ev_charger (site_id, measured_at DESC);
CREATE INDEX IF NOT EXISTS idx_telemetry_hp_site_time
ON ems.telemetry_heat_pump (site_id, measured_at DESC);
-- Market prices (forecast + planning čte ceny pro horizont)
CREATE INDEX IF NOT EXISTS idx_market_price_source_start
ON ems.market_interval_price (market_source, interval_start);
-- Audit (dashboard čte dnešní data)
CREATE INDEX IF NOT EXISTS idx_audit_interval_site_start
ON ems.audit_interval (site_id, interval_start DESC);
-- EV session (control exporter + UI hledá aktivní session podle lokality)
CREATE INDEX IF NOT EXISTS idx_ev_session_site_active
ON ems.ev_session (site_id, session_end)
WHERE session_end IS NULL;
-- Operating mode log
CREATE INDEX IF NOT EXISTS idx_mode_log_site_time
ON ems.site_operating_mode_log (site_id, activated_at DESC);