Я использую Postgres 9.X.
У меня есть две таблицы
Table A
(
id integer
);
Table B
(
id integer,
Value integer
);
Обе таблицы индексируются по id.
Таблица A может иметь повторяющиеся идентификаторы
Example:
Table A
ID
1
1
1
2
1
Я намереваюсь вставить количество вхождений идентификатора в таблицу B (в этой таблице есть все идентификаторы из таблицы A, но изначально значение равно 0)
Table B
ID Value
1 4
2 1
3 0
4 0
Вот мой SQL-оператор
update tableB set value = value + sq.total
from
( select id, count(*) as total from TableA group by id ) as sq
where sq.id = tableB.id;
С 3-10 миллионами записей в Таблице A это занимает очень много времени. Есть ли способ оптимизировать этот запрос?