चूंकि आप SQL 2008 पर हैं, इसलिए मूल भू-स्थानिक क्षमताओं का उपयोग करने पर विचार करें। आप फैंसी चीजें कर सकते हैं जैसे:
- भूगोल प्रकार का एक स्थायी गणना कॉलम बनाएं जो आपकी बात का प्रतिनिधित्व करता हो।
- गणना किए गए कॉलम पर एक स्थानिक सूचकांक बनाएं। यह
yourPoint.STDistance(@otherPoint) <= @distance
जैसी चीज़ें बना देगा कुशल
इस तरह:
alter table [yourTable] add [p] as geography::Point(Latitude, Longitude, 4326) persisted;
create spatial index [yourSpatialIndex] on [yourTable] ([p])
declare @Latitude float = <somevalue>, @Longitude float = <somevalue>;
declare @point geography = geography::Point(@Latitude, @Longitude, 4326);
declare @distance int = <distance in meters>;
select * from [yourTable] where @point.STDistance([p]) <= @distance;