如何优化点对点距离数据的读取速度 SQL table
How to optimise SQL table for read speed for point to point distance data
我打算存储所有点之间的距离列表。
所以如果我只有 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.3m 可能的旅程。存储数据以供 A 到 B 或 B 到 A 查询的最佳方式是什么?
- 我是否应该复制通往 2.5m 的反向行程的行
行和查询?
- 或者我应该做一个复合聚集索引
在两列上搜索 A 到 B 或 B 到 A
知道至少存在一个吗?
- 或者其他聪明的东西
这肯定是一个很常见的问题,所以我想从数据库专家那里了解是否有解决它的通用模式或实践。 我需要事实、参考资料或特定专业知识来回答这个问题 而不是模糊的意见,因为我自己有很多意见:)
这是在 SQL Azure 上,以防有所作为
如果我要解决这个问题,而不是说 From 和 To 列,我会将其称为 Point1 和 Point2 并始终确保 point2 大于 point1,在您的情况下为 C>B、B>A 和 C >A
希望对您有所帮助。
我打算存储所有点之间的距离列表。
所以如果我只有 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.3m 可能的旅程。存储数据以供 A 到 B 或 B 到 A 查询的最佳方式是什么?
- 我是否应该复制通往 2.5m 的反向行程的行 行和查询?
- 或者我应该做一个复合聚集索引 在两列上搜索 A 到 B 或 B 到 A 知道至少存在一个吗?
- 或者其他聪明的东西
这肯定是一个很常见的问题,所以我想从数据库专家那里了解是否有解决它的通用模式或实践。 我需要事实、参考资料或特定专业知识来回答这个问题 而不是模糊的意见,因为我自己有很多意见:)
这是在 SQL Azure 上,以防有所作为
如果我要解决这个问题,而不是说 From 和 To 列,我会将其称为 Point1 和 Point2 并始终确保 point2 大于 point1,在您的情况下为 C>B、B>A 和 C >A
希望对您有所帮助。