Аварии за сутки: полный проход журнала

Аварии за сутки: полный проход журнала

Панель «аварии за сутки» висит на стене поста жизнеобеспечения и открывается пять секунд — дежурный успевает отвернуться. Аварий в журнале меньше процента, но машина читает его целиком: дороги к этим строкам нет, и приходится смотреть каждую. Запрос зашит в панель и меняться не может — значит, дорогу надо построить. Постройте индекс так, чтобы машина спускалась сразу к аварийным строкам нужных суток, а не просеивала весь журнал.

Ускорьте этот запрос индексом
SELECT reading_id, sensor_id, reading_ts
FROM ls_readings
WHERE status = 'fault'
  AND reading_ts >= TIMESTAMPTZ '2184-03-01 00:00:00+00'
  AND reading_ts <  TIMESTAMPTZ '2184-03-02 00:00:00+00'
ORDER BY reading_ts

Только CREATE/ALTER/DROP — SELECT в конце не нужен.

Что считается решением

Менять можно только схему: индексы и ANALYZE. Запрос из условия остаётся как есть — присылать его не нужно.

  • в плане нет Seq Scan по ls_readings
  • запрос читает не больше 44 страниц по 8 КБ

Проверка идёт на данных крупнее тех, что вы видите в примерах, — ответ должен держаться на объёме.

PostgreSQLv16

Здесь будет результат вашего запроса

Фокус-радио
На паузе · SomaFM · Fluid