仅使用分区键的查询性能

Performance of query with only partition key

如果我在查询包含分区键和集群键的 table 时仅提供分区键,性能会受到影响吗?

例如,对于具有分区键 p1 和集群键 c1 的 table,将

SELECT * FROM table1 where p1 = 'abc';

效率低于

SELECT * FROM table1 where p1 = 'abc' and c1 >= 'some range start value' and c1 <= 'some range end value';

我的目标是获取 p1 = 'abc' 的所有行。

与特定分区相比,转到特定行的主要成本是需要额外的工作并且需要在分区的开头反序列化集群键索引。它有点陈旧并且基于节俭,但它的要点在以下方面仍然是正确的:

http://thelastpickle.com/blog/2011/07/04/Cassandra-Query-Plans.html (注意:删除了行级布隆过滤器)

从分区的开头读取时,您可以节省一些工作,从而改善延迟。

只要您的查询不跨越多个分区,我就不会太担心它。然后,如果分区的大小达到数百 mb 或 gb,您通常只会遇到问题。