sehr schlechte Kardinalitätsschätzung für einen Geometrieschnittpunkt


7

Ich schneide einen Punkt mit einer Reihe von Polygonen. Die Abfrage ist indiziert und die Polygone überlappen sich nicht, aber der Abfrageplan scheint zu glauben, dass anstelle von 1 Zeile 18.000 Zeilen zurückgegeben werden, was zu einem fehlerhaften Abfrageplan führt.

Insbesondere scheinen die am weitesten rechts liegenden Knoten des Abfrageplans zu glauben, dass die STPointFromText-Funktion eine Kardinalität von 1000 zurückgibt und dass der Schnittpunkt dieses mit dem Geometrieindex festgelegten Punkts 30% der 54.000 Zeilen zurückgibt. (lief 1 Million Punkte durch die Tabelle, ohne ein Gegenbeispiel zu finden, das tatsächlich mehr als eine Zeile zurückgab)

Das Ergebnis ist in dieser abgekürzten Abfrage nicht schrecklich, aber wenn ich die Ausgabe davon mit irgendetwas anderem verbinde, zwingt die Schätzung der hohen Kardinalität die vorgelagerte Tabelle dazu, eine Tabellenscan + Hashmap zu sein, obwohl die Gesamtabfrage 1 Zeile zurückgibt. Diese erweiterte Abfrage wird einige Male pro Sekunde ausgeführt, daher frage ich mich, wie ich dies optimieren kann.

Der räumliche Index ist HHHH. Für eine höchste Auflösung (über die ca. 4000 km längste Seite der Domäne) von ca. 80 x 50 m enthält der Index 56.000 Polygone mit einer erwarteten Mindestgröße von ~ 100 m.

Geschätzte vs. tatsächliche Kardinalität Beachten Sie den Unterschied zwischen den est-Zeilen und den tatsächlichen.

Abfrageplan Geschätzter Abfrageplan.

Antworten:


7

Klingt so, als ob Sie Rowgoals dazu bringen möchten, ihre Rolle bei der Abfrage zu spielen. Versuchen Sie es also TOP(1), möglicherweise mit Tests, um NULL-Werte zu vermeiden (bei nicht übereinstimmenden SRIDs). Auf diese Weise können Sie die Funktion "Nächster Nachbar" aktivieren. Ich weiß, dass Sie Contains verwenden, aber Sie möchten eine Methode verwenden, die der Qualitätssicherung mitteilt, dass Sie nur eine einzelne Zeile zurückerhalten.

http://blogs.lobsterpot.com.au/2014/08/14/sql-spatial-getting-nearest-calculations-working-properly/ könnte ein paar Tipps haben ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.