Создать пространственный индекс в PostGIS для всей схемы
9
Я загрузил несколько шейп-файлов с помощью SPIT (плагин QGIS) в свою базу данных PostGIS. Эти слои не имеют пространственного индекса, созданного при загрузке. Мне интересно, есть ли способ создать пространственный индекс для каждого слоя в схеме без написания запроса для каждого слоя. Я не очень хороший сценарист PostGIS, поэтому любая помощь будет принята с благодарностью.
Спасибо большое, это выглядит великолепно. Я запустил это, но, кажется, есть проблема, это может быть из-за моей нехватки сценариев. Но когда я запускаю операторы SELECT, я получаю следующую ошибку: ОШИБКА: функция batchindex (неизвестно, меняется символ, меняется символ) LINE 1: выбирается BatchIndex ('public', f_table_name, f_geometry_column) ... Я не уверен если я хочу добавить что-нибудь, чтобы получить партию, или если это просто место для чего-то другого. Запрос CREATE прошел без проблем, но индексы не были созданы.
Райан Гарнетт
Хм ... Я не уверен, что там происходит тогда. Тот факт, что он думает, что первый передаваемый вами параметр, unknownскорее относится к типу , чем к character varyingотключению звуковых сигналов, но я не вижу, в чем проблема. Я подумаю над этим, а между тем какие-нибудь гуру PostgreSQL хотят попробовать? :)
MerseyViking
2
Верхний ответ не сработает, если у вас есть виды с геометрией. Изменение оператора «IF» для проверки того, что вы не пытаетесь построить индекс для представления, решает эту проблему. Если вы хотите использовать виды с геометрией, замените эту строку:
IF i_exists =0
с этим:
IF i_exists =0AND tn IN(SELECT table_name, table_type FROM information_schema.tables WHERE table_type ='BASE TABLE')
unknown
скорее относится к типу , чем кcharacter varying
отключению звуковых сигналов, но я не вижу, в чем проблема. Я подумаю над этим, а между тем какие-нибудь гуру PostgreSQL хотят попробовать? :)Верхний ответ не сработает, если у вас есть виды с геометрией. Изменение оператора «IF» для проверки того, что вы не пытаетесь построить индекс для представления, решает эту проблему. Если вы хотите использовать виды с геометрией, замените эту строку:
с этим:
источник
скажем, ваша таблица «строит», вы можете индексировать с помощью GIST
Это то, что вы ищете?
источник