MS SQLServer geometry
Paul
- php
- sql
Moin moin, ich habe eine Tabelle mit geometry-Spalte. Nun möchte ich abfragen, in welchem Polygon ein bestimmter Punkt liegt. Habe das mit PHP und SQL gebastelt. Es wird jede Spalte/Polygon mit STIntersects() abgefragt. Die Abfrage dauert aber so ca. 1/2 Sek. Da das Ergebnis per Ajax sehr oft abgefragt wird, ist das zu langsam. Ich bräuchte ca. 1/10 Sek.
Gibt es da evtl. eine SQL Standardfunktion wie pointInTable() oder so die dann das entsprechnede Polygon/Spalte ausgibt?
Danke und Gruß, Paul
Moin!
Handbuch lesen:
Gibt es da evtl. eine SQL Standardfunktion wie pointInTable() oder so die dann das entsprechnede Polygon/Spalte ausgibt?
https://msdn.microsoft.com/de-de/library/bb933960.aspx
Grüße Sven
Moin!
Ganz unabhängig von der Datenbank: Derlei braucht meines Erachtens immer einen Fullscan.
Zu einer erheblichen Verkürzung könnte es beitragen, wenn Du neben dem Poligon auch mehrere, vorberechnete, viereckige Bereiche definierst in denen 1 Punkt:
oder, wenn beides nicht zutrifft:
Ob das die Sven verlinkten Lib macht kann ich nicht wissen. Auf jeden Fall erspart eine wohlformulierte Abfrage sehr viele Berechnungen und kann die Antwort in vielen Fällen durch Befragen der Indizes, also in Bruchteilen der 1/10 s liefern.
Jörg Reinholz