This topic created in 3047 days ago, the information mentioned may be changed or developed.
目前需要保存两两城市间的数据,大致为
| 城市 1 | 城市 2 | 平均时效 | 记录 1 | 记录 2 | 记录 3 |
| -------- | -----: | :----: | :----: | :----: | :----: |
请问该如何去高效储存呢?两个城市的顺序可以不一样,目前也只能想到这种,不知道各位 dalao 们有无更好解决方案
8 replies • 2018-03-04 12:29:28 +08:00
 |
|
1
sirgod Mar 3, 2018 via iPhone
图数据库?
|
 |
|
4
akira Mar 3, 2018
看城市数量,如果城市数量在一千以内,这样存应该就足够了
|
 |
|
6
rrfeng Mar 3, 2018 1
表 1 A-B 记录 1 A-B 记录 2 B-A 记录 1
表 2 A-B 平均
|
 |
|
7
DavidNineRoc Mar 4, 2018 1
cities_table ------------- id name 1 A 2 B 3 C ########################## city_records --------------- city1_id, city2_id avg_time data --------------------------------------------- 1 2 ? 记录一 2 1 ? 记录二 3 1 ? 记录三
|
 |
|
8
mdluo Mar 4, 2018 1
如果数据库提供了复合键作为主键的功能,自己把两个城市的 ID 存成复合主键就好了。
如果没有复合主键的功能,那么考虑两个城市为一个 Pair,用个 Unsigned Int 32 作为主键,高 16 位是第一个城市的 ID,低 16 位是第二个城市的 ID,总共可以覆盖 2^16 = 65536 个城市了,其他字段存“平均时效”和其他信息。
主键可以利用数据库的索引,直接按两个城市查询的时候速度最快,也能在单表内对“平均时效”这种信息做排序和查询等操作。
|