我在mssql中有一个表,因为我有点新的sql我遇到了一个问题。该表包含以下数据。
ID | Long | Lat | TimeStamp
-----------+--------------+--------------+------------------
123 | 54 | 18 | 2012-12-02...
143 | 31 | 35 | 2011-09-14...
322 | 53 | 19 | 2012-11-29...
等等......
我写了一个布尔函数来检查一对long和lats的条件。我还写了一个函数,给出了一对长和拉特之间的距离。我想要做的是添加一个距离最接近当前行的行的列,并且还传递布尔函数并且在时间上彼此足够接近。数据库表包含数百万行,因此我不使用嵌套的for循环,你们如何处理这个大型数据集? mssql有一些聪明的方法吗?
欢迎所有帮助< 3
答案 0 :(得分:0)
你基本上需要在你的函数中共存100万条记录到100万条其他记录,为你提供1万亿个值。在我看来,SQL实际上不会帮助你管理那么多记录,所以你必须自己做一些工作,而且一次只做一些工作。可能有更好的方法,但我会做以下事情:
calculated
destination
,distance
calculated
为假的记录。算法可以像下面这样工作:
calculated
为true
的每条记录,并计算到该位置的距离。如果该位置是迄今为止最短的,请设置一个变量以临时存储destination
和distance
。destination
和distance
。更新数据库中的内容,并将calculated
标记设置为true
。