Erstellen Sie einen räumlichen Index in PostGIS für ein gesamtes Schema
9
Ich habe eine Reihe von Shapefiles mit SPIT (QGIS-Plugin) in meine PostGIS-Datenbank geladen. Für diese Ebenen wurde beim Laden kein räumlicher Index erstellt. Ich frage mich, ob es eine Möglichkeit gibt, einen räumlichen Index für jede Ebene im Schema zu erstellen, ohne eine Abfrage für jede Ebene zu schreiben. Ich bin kein guter PostGIS-Drehbuchautor, daher wäre jede Hilfe sehr dankbar.
Vielen Dank, das sieht gut aus. Ich habe dies ausgeführt, aber es scheint ein Problem zu geben, wohlgemerkt, das könnte an meiner mangelnden Skriptfähigkeit liegen. Wenn ich jedoch die SELECT-Anweisungen ausführe, wird folgende Fehlermeldung angezeigt: FEHLER: Funktion Batchindex (unbekannt, Zeichen variierend, Zeichen variierend) existiert nicht LINE 1: Wählen Sie BatchIndex ('public', f_table_name, f_geometry_column) ... Ich bin nicht sicher wenn ich etwas hinzufügen soll, um die Charge zu erhalten, oder wenn dies nur ein Platzhalter für etwas anderes ist. Die CREATE-Abfrage wurde ohne Probleme ausgeführt, es wurden jedoch keine Indizes generiert.
Ryan Garnett
Hmm ... ich bin mir nicht sicher, was dann dort passiert. Die Tatsache, dass der erste Parameter, den Sie übergeben, eher vom Typ ist unknownals character varyingAlarmglocken auszulösen, aber ich kann nicht erkennen, wo ein Problem vorliegt. Ich werde darüber nachdenken, während irgendwelche PostgreSQL-Gurus da draußen Lust haben, es auszuprobieren? :)
MerseyViking
2
Die Top-Antwort funktioniert nicht, wenn Sie Ansichten mit Geometrie haben. Durch Ändern der IF-Anweisung, um zu überprüfen, ob Sie nicht versuchen, einen Index für eine Ansicht zu erstellen, wird dieses Problem behoben. Wenn Sie Ansichten mit Geometrie verwenden möchten, ersetzen Sie diese Linie:
IF i_exists =0
mit diesem:
IF i_exists =0AND tn IN(SELECT table_name, table_type FROM information_schema.tables WHERE table_type ='BASE TABLE')
unknown
alscharacter varying
Alarmglocken auszulösen, aber ich kann nicht erkennen, wo ein Problem vorliegt. Ich werde darüber nachdenken, während irgendwelche PostgreSQL-Gurus da draußen Lust haben, es auszuprobieren? :)Die Top-Antwort funktioniert nicht, wenn Sie Ansichten mit Geometrie haben. Durch Ändern der IF-Anweisung, um zu überprüfen, ob Sie nicht versuchen, einen Index für eine Ansicht zu erstellen, wird dieses Problem behoben. Wenn Sie Ansichten mit Geometrie verwenden möchten, ersetzen Sie diese Linie:
mit diesem:
quelle
Angenommen, Ihre Tabelle wird erstellt. Sie können sie mithilfe von GIST indizieren
Ist es das, wonach du suchst?
quelle