这是一个我想要一个有效的AQL命令的问题。
ArangoDB 3.4.0- engine,RocksDB存储引擎
收藏演唱会有33,000条记录
我在_key上有一个主索引
我想做的是:
我想从集合中随机抽取25条记录。
我已经看过以下我可以做的事情:
FOR g IN gigs
SORT RAND()
LIMIT 25
RETURN g在我的机器上,这大约需要2.8秒。
RETURN NTH(gigs, 30)其中30将被随机数替换。
这也需要3秒钟。
我不知道这是否可能,但我可以告诉它从主索引中挑选第n条记录( _key是我真正需要的全部)吗?
关于如何获得更好的结果,您有什么建议吗?
发布于 2019-02-26 02:07:44
这里的挑战是,你需要将索引和随机性结合起来,因为rocksdb没有一种快速的方法让any()在集合中给你一个随机的文档。
一种好的方法是将随机值与范围比较和LIMIT语句相结合:
FOR g IN gigs
FILTER g.someIndexedNumber > @externalyGeneratedRandomNumber
LIMIT 25
RETURN g您应该使用explain()来验证您的查询实际上能够利用索引。
https://stackoverflow.com/questions/52908342
复制相似问题