Javin
Javin
  • 发布:2023-08-04 16:09
  • 更新:2023-08-04 16:27
  • 阅读:141

求救!如何快速的进行联表查询?

分类:uniCloud

假设有个旅行团表和旅行线路表,每个旅行团都关联一个旅行线路。一个旅行线路下有多个不同时间的旅行团。我想要查询在某个时间有哪些旅行线路。我能想到的查询方式只有下面这种。

var groupTemp = db.collection(旅行团).where({出发时间: 某时间}).getTemp()  
db.collection(groupTemp, 旅行线路).where("旅行线路.name == '北京'").field("旅行线路").distinct().get().then(res => {  
    console.log(res)  
})

是用distinct来排除相同的旅行线路。只要这个旅行线路下有某个团的时间符合要求,最终展示的是搜索出来的所有旅行线路。

这种方法是用到了distinct排除算法,而不是直接搜索的线路(我不知道是否能直接搜索线路),我的这种搜索方法不知道会不会很慢引发全表遍历?有没有更好的查询方法可以满足这个需求?

2023-08-04 16:09 负责人:无 分享
已邀请:
喜欢技术的前端

喜欢技术的前端 - QQ---445849201

有个 旅行路线表,想要查询在某个时间有哪些旅行线路,在旅行路线表添加旅行路线数据的时候,加上开始结束时间,这样吗(●'◡'●)

  • Javin (作者)

    旅行线路里面有多个时间的旅行团。所以时间条件在旅行团上。然后搜索有哪些旅行线路可以出发。

    2023-08-06 22:18

  • Javin (作者)

    有可能旅行线路里有3个团同时满足条件,但是也只展示一个旅行线路。我之前想过把旅行团的数据嵌入到旅行线路里,比如加一些数组索引,这样直接查询旅行线路里的数组,来判断有没有达成条件,但是这样也带来一些问题,1:带来更多的存储量,2数组索引的速度不如普通索引,3每次添加新的旅行团的时候需要写两次数据,先添加一次旅行团,然后再把旅行团的信息添加到旅行线路的数组中,4旅行团数据发生变化要更新旅行线路的数组,我上面用的distinct方法可以满足这种查询需求,而且不需要这么复杂的更新操作,占用空间也少,但是就是不知道查询性能如何,不知道是否会引发全表遍历。

    2023-08-06 22:29

要回复问题请先登录注册