Самый эффективный запрос для увеличения на несколько тысяч целых в PostgreSQL - PullRequest
0 голосов
/ 08 мая 2018

Допустим, у меня есть около 10 тысяч устройств, и я хочу отслеживать их передачу данных.

CREATE TABLE devices (
  id SERIAL PRIMARY KEY,
  transfer INT
);

Со времени последнего обновления я хранил (в памяти) карту идентификаторов устройств и их передачу данных. Я хочу периодически записывать эти приращения в свою базу данных каждую минуту или около того.

В данный момент я думаю о создании строки запроса (я использую Go, поэтому fmt.Sprintf), чтобы она выглядела примерно так:

UPDATE devices SET
    transfer = transfer + temp.transfer
FROM (VALUES
    (1, 500),
    (2, 128),
    (3, 204)  
  ) AS temp(id, transfer) 
WHERE temp.id = devices.id;

Есть ли лучший способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...