Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 索引纬度和经度SQL Server 2008_Sql Server_Database_Algorithm_Google Maps_Geolocation - Fatal编程技术网

Sql server 索引纬度和经度SQL Server 2008

Sql server 索引纬度和经度SQL Server 2008,sql-server,database,algorithm,google-maps,geolocation,Sql Server,Database,Algorithm,Google Maps,Geolocation,嗨,我的数据库表结构如下表-ItemLocation ItemId varchar(10) ItemGeo (geography) 123n13 POINT (-79.660470500000017 43.5482682) n4f923 POINT (-79.7511776 43.6575816) 还有更多的行 我现在用一个简单的插入来插入数据,但实际上,我想按位置插入行,这样接近的项将保留在

嗨,我的数据库表结构如下表-ItemLocation

ItemId varchar(10)          ItemGeo (geography)
123n13                      POINT (-79.660470500000017 43.5482682)
n4f923                      POINT (-79.7511776 43.6575816)
还有更多的行

我现在用一个简单的插入来插入数据,但实际上,我想按位置插入行,这样接近的项将保留在数据库中,因此如果a尝试插入更接近123n13的新项“q3eqwe2”,它将转到123n13旁边,并替换n4f923索引,所有底部行将移到索引+1。这是否可行

ItemId varchar(10)          ItemGeo (geography)
    123n13                      POINT (-79.660470500000017 43.5482682)
    q3eqwe2                     POINT (-79.66039911221 43.5479121)
    n4f923                      POINT (-79.7511776 43.6575816)
如果可行的话,我不想通过检查所有行的ItemGeo列来找到新行的完美索引,那么我可以添加新列,该列将根据项目位置进行索引,并且我可以轻松找到要插入的最接近的位置匹配项吗?
希望它有意义:)

我不确定它是否有意义。对于地理类型,您需要一个映射到地球上的二维索引。如果A接近B,B接近C,A可能接近C,或者远离C,那么我们就进入了旅行商问题。你的索引从哪里开始和结束

可以根据地理类型创建空间索引。我认为那是最好的选择


问题的根源是,你为什么认为你需要这样做?

“亲密”是一个棘手的概念,尤其是当你试图保持紧密的联系时。你很快就会发现自己处于NP难的领域。那么,把相对较近的项目存储在一起的最佳方式是什么呢?你不能以任何有意义的方式来这样做。行的顺序从来都不重要。您仍在存储CLR对象。这些是二进制blob。它们没有以任何有意义的方式“处于”79.1点。空间索引在整个世界上创建一个网格,并允许您以这种方式搜索地理类型。话虽如此,我们的测试说服我们继续使用数值(18,12)lat-long列,因为我们的数值索引搜索比空间索引快得多。你认为为什么要这样做?您认为地理位置相近的项目在数据库中彼此“靠近”存储会带来什么好处(无论这意味着什么)?听起来你认为这会使插入操作更快:不会。嗯,但假设我已经在数据库中有了A和B,我正在尝试添加C,所以如果A和C之间的距离小于B和C,我想按顺序添加A,C,B,如果D与A和B之间的距离相等呢?它去哪里了?