Если ваша таблица баллов содержит миллиард записей, даже не пытайтесь обновить ее - или вы можете, если вы можете подождать несколько дней / недель, чтобы закончить это обновление;). Для таких массовых операций идеальным решением является CTAS (создайте таблицу как select);
Я предполагаю, что ваши полигоны не пересекаются друг с другом, если да, то скажите мне profile_id, какой буфер вы хотите (max, min ....);
create table track_points2 as
select your_columns_for_track_points(expect profile_id), b.profile_id
from track_points tp, buffers b
where st_dwithin(tp.geom, b.geom,0);
Затем удалите существующую таблицу track_points и замените ее новой;
drop table track_points;
alter table track_points2 alter rename to track_points;
И создайте все необходимые индексы и ограничения для вашей новой таблицы.
Если вы не можете удалить таблицы, изменить таблицы и т. Д. В своей базе данных, то, конечно, вам придется обновить, но будьте готовы к долгому ожиданию.
update track_points tp
set profile_id=b.profile_id
from buffers b
where st_dwithin(tp.geom, b.geom,0);
Как я уже писал ранее, если у вас есть пересекающиеся буферы / полигоны, вам придется изменить обновление, чтобы получить то, что вы хотите, из множества вариантов profile_id.