在并行中为相同的字段设置散列索引和跳过者索引是否有意义?Arango会对相等查询使用散列索引,对范围请求使用跳过索引吗?
发布于 2018-02-12 15:24:19
在同一属性(甚至多个属性)上有一个跳过索引和一个散列索引是可能的。用于查询的索引取决于以下几个因素:
attribute > leftBound && attribute < rightBound )将比仅使用attribute > leftBound更有可能使用跳过列表索引)null值(在本例中,索引将不被使用,无论它是哈希索引还是跳过索引)将使用哪个索引(如果有的话)将始终通过在特定查询上运行db._explain(query)来显示。
但是,在相同属性上设置多个索引有一个缺点,即每个单独的索引都会稍微减缓对集合的写入。对于基于RocksDB的索引,每个附加索引也将占用磁盘空间。对于基于MMFiles的索引,服务器启动/收集负载上的索引建立时间是要考虑的因素,以及每个索引的额外RAM使用情况。
因此,在大多数情况下,这是在某些查询可能获得的额外查找速度与额外内存/磁盘空间和索引建立/维护成本之间的权衡。
https://stackoverflow.com/questions/48748791
复制相似问题