如果在查询同时包含分区键和集群键的表时只提供分区键,性能会受到影响吗?
例如,对于具有分区键 p1 和集群键 c1 的表,将
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' 获取所有行。
如果在查询同时包含分区键和集群键的表时只提供分区键,性能会受到影响吗?
例如,对于具有分区键 p1 和集群键 c1 的表,将
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,您通常只会遇到问题。