2010-10-06 72 views
2

我讀過一些關於使用空間優化表的文章。實際上我使用存儲的經度和緯度作爲varchar逗號分隔(lat; lng)。需要移動SQL Server 2005表存儲Lat; Lng作爲varchar到Spatial?

您能否提出執行此更改並列舉優勢的最佳方法。對於一個大型項目來說真的有必要或者只是遷移到SQL Server 2008?

謝謝。

+0

我已經列舉您的具體情況的一些選項(計算列,用戶定義的函數),當你在這裏問的問題:MSSQL緯度,經度爲varchar分裂過程使用的緯度和液化天然氣的速度搜索(HTTP ://stackoverflow.com/questions/3873619/mssql-latlng-varchar-split-procedure-to-use-as-lat-and-lng-for-speed-searching/3873892#3873892)。 – 2010-10-06 16:08:06

+0

存儲經緯度值所帶來的好處將取決於您如何使用這些值。你能詳細說明一下嗎? – 2010-10-06 16:22:52

+0

這些值用於與積分地理點之間的Haversine距離。 Joe能否爲保存性能的大型數據庫提供最佳方式。 – user325558 2010-10-06 17:33:47

回答

1

我想添加兩個新的persisted computed colunns到您的表中,如下面的演示所示。

create table Demo (
    LatLng varchar(100), 
    Lat as CAST(LEFT(LatLng, charindex(';',LatLng)-1) as float) PERSISTED, 
    Lng as CAST(SUBSTRING(LatLng, charindex(';',LatLng)+1, LEN(LatLng)-charindex(';',LatLng)) as float) PERSISTED 
) 

insert into Demo 
    (LatLng) 
    values 
    ('33.0000;15.222222') 

select * 
    from Demo 

drop table Demo 
+0

偉大的喬,瑟克斯。該表是sqlserver2005未​​針對幾何搜索進行優化。你能否解釋一下將這個解決方案移植到優化幾何體上http://mssqlspatial.codeplex.com/wikipage?title=Getting%20Started&referringTitle=Tutorials – user325558 2010-10-06 23:33:12

+0

我很抱歉,但這遠遠超出了簡單評論部分的範圍。我建議你繼續谷歌的一些教程和例子。然後回到SO,對於任何尚不清楚的事情提出具體問題。 – 2010-10-07 01:49:46

相關問題