Ich versuche, einfache Geoverarbeitungsroutinen von ESRI-basierten Prozessen auf SQL Server zu verschieben. Ich gehe davon aus, dass es weitaus effizienter sein wird. Für meinen ersten Test arbeite ich an einer Schnittroutine, um überlappende lineare Daten zuzuordnen.
In meiner WCASING-Tabelle habe ich 1610 Datensätze. Ich versuche, diese Gehäuse mit dem zugehörigen Netz zu verbinden. Ich habe ~ 277.000 Netze. Ich habe ~ 1.600 Gehäuse.
Ich führe die folgende Abfrage aus, um einen allgemeinen Eindruck davon zu bekommen, wie lange es dauern wird, einzelne Übereinstimmungen zu finden. Diese Abfrage ergab 5 gültige Schnittpunkte in 40 Sekunden.
SELECT Top 5 [WCASING].[OBJECTID] As CasingOBJECTID,
[WPUMPPRESSUREMAIN].[OBJECTID] AS MainObjectID, [WCASING].[Shape]
FROM [dbo].[WPUMPPRESSUREMAIN]
JOIN [WCASING]
ON [WCASING].[Shape].STIntersects([WPUMPPRESSUREMAIN].[Shape]) = 1
Meine Hauptfragen;
Wird dieser Vorgang je nach Suchreihenfolge schneller ablaufen?
- Finden von 'A' innerhalb von 'B' vs.
- Finden von 'B' innerhalb von 'A'
- Die erste Rückgabe von 5 Datensätzen aus diesen Datensätzen ist, dass dies keine Rolle spielt
Wird dieser Prozess schneller, wenn ich zuerst puffere, um mich auf einen kleineren Hauptsatz zu beschränken, und dann suche?
Kann ich SQL Server-Optimierung verwenden, um mit geometriebasierten Abfragen zu arbeiten?
SELECT WCASING.OBJECTID AS CasingOBJECTID,
WPUMPPRESSUREMAIN.OBJECTID AS MainObjectID, WCASING.UFID AS UFID,
WPUMPPRESSUREMAIN_IPS.UFID AS MainUFID, WCASING.SHAPE
INTO WCASING_INTDefsV6
FROM WCASING with (index([FDO_ShapeWC]))
INNER JOIN [WPUMPPRESSUREMAIN_IPS] ON
[WPUMPPRESSUREMAIN_IPS].Shape.STIntersects(WCASING.SHAPE) = 1
Diese neue Abfrage hat die Definitionen verbessert.
- Jetzt haben beide Tabellen räumliche Indizes
- Zuvor hatte die Gehäusetabelle (kleiner) keinen räumlichen Index
- Es enthielt einen nicht gruppierten Index
Die Abfrage enthält auch die Anweisung with index.
Die neue Abfrage dauerte 37 Minuten. Die alte Abfrage dauerte 44 Minuten.
Ich hatte auf bessere Ergebnisse gehofft und werde weiter testen.