由于Cassandra没有执行计划,我们想知道多个二级索引是如何工作的?也就是说,如果查询是按不同的列顺序进行过滤的,那么哪个二级索引会得到优先选项?为什么?
我们知道它们是一种糟糕的做法,应该用于低基数集或许多重复项,但我们正在尝试利用现有的遗留cassandra表,不能同时使用cassandra二级索引和SOLR索引,所以这里没有选择。
这里也没有太多讨论:http://www.datastax.com/docs/1.1/ddl/indexes
发布于 2014-08-05 12:12:59
二级索引类似于您自己创建的查找表,由cassandra管理。节点存储它所包含的行的索引信息。对节点上的索引的更新和对该节点上的数据的更新是原子的。如果在查询中使用了多个索引,则实际上只会使用一个索引。我希望有人能纠正我,但据我所知,您的谓词中的第一个筛选器将被使用。
不要将索引视为全局查找(在一般情况下)。这将导致恼人的性能问题,等等。可以将索引看作是一种快速到达分区内某些列的方法,在该分区上,您希望相等过滤器所针对的列不是聚集键(或者您希望能够在不指定第一个聚集键的情况下过滤第二个聚集键)。如果你命中一个分区,那么索引性能通常是不错的。关于低基数的信息是正确的-基数越高,索引的性能就越差。
这里有一个关于索引的简短常见问题解答:http://wiki.apache.org/cassandra/SecondaryIndexes
https://stackoverflow.com/questions/25130332
复制相似问题