首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ArangoDB高效获取随机记录

问从ArangoDB高效获取随机记录
EN

Stack Overflow用户
提问于 2018-10-21 01:34:49
回答 1查看 131关注 0票数 1

这是一个我想要一个有效的AQL命令的问题。

ArangoDB 3.4.0- engine,RocksDB存储引擎

收藏演唱会有33,000条记录

我在_key上有一个主索引

我想做的是:

我想从集合中随机抽取25条记录。

我已经看过以下我可以做的事情:

代码语言:javascript
复制
FOR g IN gigs
  SORT RAND()
  LIMIT 25
  RETURN g

在我的机器上,这大约需要2.8秒。

代码语言:javascript
复制
RETURN NTH(gigs, 30)

其中30将被随机数替换。

这也需要3秒钟。

我不知道这是否可能,但我可以告诉它从主索引中挑选第n条记录( _key是我真正需要的全部)吗?

关于如何获得更好的结果,您有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-26 02:07:44

这里的挑战是,你需要将索引和随机性结合起来,因为rocksdb没有一种快速的方法让any()在集合中给你一个随机的文档。

一种好的方法是将随机值与范围比较和LIMIT语句相结合:

代码语言:javascript
复制
FOR g IN gigs
  FILTER g.someIndexedNumber > @externalyGeneratedRandomNumber
  LIMIT 25
  RETURN g

您应该使用explain()来验证您的查询实际上能够利用索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52908342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档