Im Moment habe ich eine Seite mit einer Tabelle, die Breite/Länge float-Spalten hat, und einen Index über diese zwei Spalten und eine andere I abrufen müssen.Kann ich in SQL Server 2008 den Index "Covering, Spatial" erstellen?
Ich frage ständig diese Tabelle, um die Zeilen zu erhalten, die innerhalb eines Radius von einem bestimmten Punkt fallen (ich bekomme eigentlich ein Quadrat für die Geschwindigkeit), aber ich brauche nur die Felder, die bereits indiziert sind, also diesen Index in der Tat Abdeckung ist, und der Ausführungsplan hat nur 2 Schritten:
Index Seek (cost: 100%) and SELECT (cost: 0%)
Nun, ich versuche, die Vorteile der räumlichen Funktionen von SQL zu nehmen 2008. ich die Geographie Spalte erstellt haben, füllte es, erstellt der räumliche Index, die Werke.
Und alles funktioniert gut, außer dass der Ausführungsplan eine Million Schritte hat und 74% der Zeit für einen Clustered Index Seek ausgegeben wird, wo er die im Spatial Index gefundenen Zeilen mit der tatsächlichen Tabelle verbindet. den Rest der Daten ...
(Spatial Index Seek nimmt 1% der Ausführungsplan Kosten)
Also, anscheinend zu bekommen, es den räumlichen Index in geeigneter Weise verwendet, und die Datensätze zu finden, ich brauche viel schneller als Vorher mit meinem "normalen" Index über Lat/Long, aber der Beitritt zur Haupttabelle bringt mich um, die Spatial-Abfrage dauert 7 mal so lang wie meine alte.
Gibt es eine Möglichkeit mehr Spalten zur räumlichen Index hinzufügen, so dass es zu verdecken werde und es kann in einem Schritt der Dinge tun, so wie es vor tat?
Gibt es andere Dinge, die ich tun könnte, um diese Situation zu verbessern?
UPDATE: Ich fand, dass „normale“ Indizes andere Spalten mit INCLUDE Stichwort „include“ kann (was ich nichts wusste, habe ich zu zählen nur die Spalten im Index selbst)
Nach zu der Dokumentation here, diese Klausel ist keine Option für Räumliche Indizes ... Irgendwelche Ideen?
Danke!
Daniel