2011-10-05 13 views
7

Coğrafya olarak coğrafyalar ve diğer çokgenler ile bir tane olmak üzere 2 tablo bir tane var.SQL Spatial Katıl

DECLARE @p geography; 
select @p = PointGeom from dbo.PointTable where ID = 1 
SELECT a.ID, ATTRIBUTE1, geom 
from dbo.PolygonTable a 
where geom.STIntersects(@p) = 1; 

Ancak, ben bir iki tablo arasında birleştirme ve hangilerinin her poligonları olsun istiyorum: Ben şu sorgu tarafından tek nokta (nokta tablosundan) denk geldiği çokgen bulmak mümkün duyuyorum Nokta Tablosundaki noktalar düşer. Bu mümkün mü? Yoksa Point tablosunu kullanarak dönüp yukarıdaki sorguyu birden çok kez çağırmam mı gerekiyor?

cevap

12

Bu çalışması gerekir:

SELECT 
    polyTable.[PolygonID] 
, pointTable.[PointID] 
FROM 
[PolygonTable_Name] polyTable WITH(INDEX([SPATIAL_INDEX_NAME])) 
INNER JOIN 
[PointTabl_Name] pointTable 
ON 
polyTable.Geog.STIntersects(pointTable.Geog) = 1 

Bunu hızlandırır olarak sorguya "(INDEX (...)) İLE" bir dizin ipucu ekledik.