Hallo
Я предполагаю, что precinct - это уникальный идентификатор в nycpp, тогда вы можете попробовать:
update nycpp set number_of crashes=a.n_crashes from
(SELECT P.precinct, count(C) as n_crashes FROM nycpp P, nyccrash C
WHERE _st_contains(P.the_geom, C.crashpoint)
GROUP BY P.precinct
ORDER BY P.precinct) a
where nycpp.precinct=a.precinct;
Но почему вы используете _st_contains вместо st_contains
версия подчеркивания не будет использовать ваши пространственные индексы, но st_contains выполнит первое сканирование индекса, обнаружив пересекающиеся прыгающие блоки перед запуском нижней версии.
Итак, вы, вероятно, абсолютно хотите использовать st_contains вместо содержимого. Если ваши таблицы достаточно велики для того, чтобы нуждаться в индексе: в этом запросе пространственные индексы важны как для таблиц, так и для индекса на участке. Не забудьте проанализировать таблицу после создания индексов, чтобы заставить их работать.
Кстати, я думаю, что вы должны пометить вопросы как ответы, если вы удовлетворены ответом, чтобы другие не пытались на них отвечать.
НТН
Никлас