2009-08-26 96 views
6

我想創建一個大型數據庫的GPS座標,可以說「返回是[這個座標]‘N’米內的所有座標」進行查詢。空間索引

我想知道如何實現在SQLServer2008的四叉樹索引?

我想編寫調用它採用四叉樹,使我可以快速檢索對象的查詢一個.NET模塊。

我如何能實現上述功能?

在此先感謝

回答

5
CREATE TABLE mytable (id INT NOT NULL, mypoint GEOGRAPHY NOT NULL, ...) 

CREATE SPATIAL INDEX SX_mytable_mypoint ON mytable (mypoint) 

SELECT * 
FROM mytable 
WHERE mypoint.STDistance(geography::STGeomFromText(N'POINT (latitude longitude)', 4326) <= @N 
+0

感謝that.But我SQLServer2008的數據類型幾何不geography.Actually,我想知道的四叉樹的實現是SQLSERVER2008如果我在我的表上創建索引空間索引?這意味着它是四叉樹實現嗎? – user98454 2009-08-26 13:49:38

+0

不,這是一個「B-樹」,用於索引tesselated表面上的單元格。 「SQL Server」本身不支持「R-Tree」或「Q-Tree」。但是,它仍然有不俗的表現。對於'GPS'數據,最好將位置保留爲'GEOGRAPHY',因爲'GEOMETRY'假定爲簡單座標(而不是球形)。 – Quassnoi 2009-08-26 13:58:19

+0

意味着q-tree實現在sqlserver2008中是不可能的? – user98454 2009-08-26 14:05:37