Еще добавить данные в несколько записей в таблице PostGIS - PullRequest
1 голос
/ 26 октября 2010

Никлас, спасибо за ответ на мой предыдущий вопрос ....

Прости меня за мое невежество и за то, что я спрашиваю, что может оказаться довольно простым вопросом, но базы данных - не моя область знаний.

Оператор выбора, который дает мне количество сбоев в каждом процитном: ВЫБЕРИТЕ P.precinct, count (C) ОТ nycpp P, nyccrash C ГДЕ _st_contains (P.the_geom, C.crashpoint) ГРУППА ПО P.precinct ЗАКАЗ ПО P.precinct;

Я хочу добавить только счетчик в мою таблицу nycpp. Переменная, которая будет содержать счетчик, это number_of crash ....

Еще раз спасибо за помощь

Chris

1 Ответ

1 голос
/ 26 октября 2010

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 вместо содержимого. Если ваши таблицы достаточно велики для того, чтобы нуждаться в индексе: в этом запросе пространственные индексы важны как для таблиц, так и для индекса на участке. Не забудьте проанализировать таблицу после создания индексов, чтобы заставить их работать.

Кстати, я думаю, что вы должны пометить вопросы как ответы, если вы удовлетворены ответом, чтобы другие не пытались на них отвечать.

НТН Никлас

...