如何针对点对点距离数据的读取速度优化SQL表

时间:2015-07-19 15:39:14

标签: sql-server database azure database-design azure-sql-database

我打算存储从所有点到彼此的距离列表。

所以,如果我只有3分(A-C),那就像

 | FROM | TO | DISTANCE
 | A    | B  | 10 miles
 | A    | C  | 15 miles
 | B    | C  | 12 miles

显然你可以推断B到A = 10英里,因为你知道A到B = 10英里。就我的疑问而言,我可能会搜索A到B或B到A - 我无法保证旅程的起点和终点的顺序。

我有1600分,这使得(1600 ^ 2 - 1600)/ 2 = 1.3米可能的旅程。存储数据以便通过A到B或B到A来查询的最佳方法是什么?

  • 我应该为反向旅程复制行,导致2.5米 行和查询?
  • 或者我应该制作复合聚簇索引 在两列上搜索A到B或B到A 知道至少有一个存在?
  • 或其他聪明的东西

这肯定是一个常见的问题,因此我想从数据库专家那里了解是否有常见模式或实践来解决它。 我想要事实,参考或具体的专业知识来回答这个问题而不仅仅是模糊的意见,因为我自己有很多这样的意见:)

这是在SQL Azure上,如果有所作为

1 个答案:

答案 0 :(得分:2)

如果我要解决这个问题,而不是说From和To列,我会称之为Point1和Point2,并始终确保point2大于point1,在你的情况下C> B,B> A和C> A

希望这有帮助。