Cassandra Range查询:二级索引与未索引的Colum

时间:2017-08-03 23:43:55

标签: cassandra nosql

我已经看到在cassandra上进行范围查询的最佳方法是使用CLUSTERING KEY。但我需要做一些范围查询而不是CLUSTERING KEY列。

我读到我们可以使用ALLOW FILTERING在任何列上执行此操作。但是,如果我在该列上创建二级索引,是否有任何性能优势?

1 个答案:

答案 0 :(得分:1)

看看这个链接: https://www.datastax.com/dev/blog/allow-filtering-explained-2

ALLOW FILTERING选项允许您告诉Cassandra,一旦从磁盘加载行,就可以对数据进行内存中过滤。因此,我们可以使用它来搜索聚类列,而不指定先前的聚类列。但我们无法在非群集列上使用它。

请参阅博客中的以下示例架构。使用ALLOW FILTERING并不允许我们按作者列进行过滤,直到我们将其作为索引,然后不需要ALLOW FILTERING选项。

cqlsh:test> SELECT * FROM blogs WHERE author = 'john' ALLOW FILTERING;
Bad Request: No indexed columns present in by-columns clause with Equal operator
cqlsh:test>

cqlsh:test> CREATE INDEX authors ON blogs (author);

cqlsh:test> SELECT * FROM blogs WHERE author = 'john';
(0 rows)
cqlsh:test> SELECT * FROM blogs WHERE author = 'john' ALLOW FILTERING;
(0 rows)