这是我想要有效的AQL命令的问题。
ArangoDB 3.4.0-RC.1,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是我真正需要的)?
关于如何获得更好结果的任何想法?
答案 0 :(得分:0)
这里的挑战是,您需要将索引与随机性结合起来,因为rocksdb并没有使any()
在集合中为您提供随机文档的快速方法。
一种好的方法是将随机值与范围比较和LIMIT
语句组合在一起:
FOR g IN gigs
FILTER g.someIndexedNumber > @externalyGeneratedRandomNumber
LIMIT 25
RETURN g
您应使用explain()
来验证您的查询是否确实能够利用索引。