Utwórz indeks przestrzenny w PostGIS na całym schemacie
9
Załadowałem wiele plików shapefile przy użyciu SPIT (wtyczka QGIS) do mojej bazy danych PostGIS. Te warstwy nie miały indeksu przestrzennego utworzonego podczas ładowania. Zastanawiam się, czy istnieje sposób utworzenia indeksu przestrzennego dla każdej warstwy w schemacie bez pisania zapytania dla każdej warstwy. Nie jestem dobrym pisarzem skryptów PostGIS, więc każda pomoc byłaby bardzo mile widziana.
Dziękuję bardzo, to wygląda świetnie. Uruchomiłem to, ale wydaje się, że jest problem, pamiętajcie, że może to wynikać z mojego braku umiejętności skryptowych. Ale gdy uruchamiam instrukcje SELECT, pojawia się następujący błąd: BŁĄD: funkcja batchindex (nieznana, zmieniająca się postać, zmieniająca się postać) nie istnieje LINIA 1: wybierz BatchIndex ('public', f_table_name, f_geometry_column) ... Nie jestem pewien jeśli mam coś dodać, aby uzyskać partię, lub jeśli jest to po prostu miejsce na coś innego. Zapytanie CREATE przebiegło bez problemu, ale nie wygenerowano żadnych indeksów.
Ryan Garnett
Hmm ... nie jestem pewien, co się tam dzieje. Fakt, że myśli, że pierwszy parametr, który przekazujesz, jest typu, unknowna nie character varyinguruchamia dzwonki alarmowe, ale nie widzę, gdzie ma problem. Zastanowię się, tymczasem jakiś guru PostgreSQL ma ochotę spróbować? :)
MerseyViking
2
Najlepsza odpowiedź nie zadziała, jeśli masz widoki z geometrią. Zmiana instrukcji „JEŚLI”, aby sprawdzić, czy nie próbujesz budować indeksu w widoku, rozwiązuje ten problem. Jeśli chcesz używać widoków z geometrią, zamień ten wiersz:
IF i_exists =0
z tym:
IF i_exists =0AND tn IN(SELECT table_name, table_type FROM information_schema.tables WHERE table_type ='BASE TABLE')
unknown
a niecharacter varying
uruchamia dzwonki alarmowe, ale nie widzę, gdzie ma problem. Zastanowię się, tymczasem jakiś guru PostgreSQL ma ochotę spróbować? :)Najlepsza odpowiedź nie zadziała, jeśli masz widoki z geometrią. Zmiana instrukcji „JEŚLI”, aby sprawdzić, czy nie próbujesz budować indeksu w widoku, rozwiązuje ten problem. Jeśli chcesz używać widoków z geometrią, zamień ten wiersz:
z tym:
źródło
powiedzmy, że twoja tabela „buduje”, możesz indeksować za pomocą GIST
Czy tego szukasz?
źródło