2017-05-18 128 views
1

我有以下DDL:性能考虑

CREATE TABLE mykeyspace.mytable (
a text, 
b text, 
c text, 
d text, 
e text, 
starttime timestamp, 
endtime timestamp, 
PRIMARY KEY ((a, b, c), d, e, starttime, endtime) 
) WITH CLUSTERING ORDER BY (d ASC, e ASC, starttime ASC, endtime ASC) 

我只有下面的SELECT/DELETE查询:

SELECT */DELETE FROM mytable WHERE a = ? AND b = ? AND C = ? AND d = ?; 

我只是想知道列d可以作为复合分区键的一部分包含在内,因此行查找就足以代替行查找+集群列查找?在这种情况下,它也会改善性能?

+0

Isnt'd'已经是组合键的一部分吗? –

+1

好吧,我会澄清d是聚类列的一部分,而不是分区密钥。我想将它作为复合PARTITION键的一部分。 – user892960

回答

1

列d包括复合分割键绝对会提高性能

  • 你的数据在集群之间以及分发。
  • SELECT查询将而不是插入范围墓碑
0

我觉得更多的列我有更快,没有集群级滤波需要

  • DELETE查询将标志着分区markedForDeleteAt,分区键越好越好。

    所以我建议在PARTITION KEY中包含尽可能多的列。它将改进SELECT查询性能,并且还会避免一些墓碑问题(因为除非您重新创建分区,否则您将在分区级别删除)。