У меня есть таблица со столбцом географии, в котором хранится местоположение собственности.
У меня есть такая процедура -
PROCEDURE dbo.spt_sold_property_search
(
@latitude_min Decimal(9,6),
@latitude_max Decimal(9,6),
@longitude_max Decimal(9,6),
@longitude_min Decimal(9,6)
)
AS BEGIN
SET NOCOUNT ON
SELECT * FROM [dbo].[sold_property] AS p WITH(NOLOCK)
WHERE p.location ***is in the lat/long min max bounds***
END
Что мне нужно в предложении where, чтобы проверить, находится ли географическая точка в пределах Lat/Long min max? Это большой набор данных, поэтому производительность имеет решающее значение.
Должен ли я создавать в коде тип Geography SQL из границ и передавать его в proc как процедуру?
Я также рассматривал возможность создания двух вычисляемых столбцов int (широта/долгота), которые будут создаваться при вставке, а затем простые ‹ >, поскольку я слышал, что это быстрее, чем запросы по географии.
location
? - person Vamsi Prabhala   schedule 23.07.2015geography
, но быстрый поиск в Интернете показывает, что вам нужно преобразовать свои координаты вpolygon
geography
, а затем использовать.STWithin
для теста. См. msdn.microsoft.com/en-us/library/ff929207.aspx, а также sql-server-helper.com/sql-server-2008/ - person Turophile   schedule 23.07.2015