我有以下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 :(得分:1)
复合分区键中的列d包含绝对可以提高性能
SELECT
查询速度更快,无需进行群集级别过滤DELETE
查询会将该分区标记为markedForDeleteAt
,而不是插入范围逻辑删除答案 1 :(得分:0)
我觉得PARTITION KEY中的列越多越好。
所以我的建议是在PARTITION KEY中包含尽可能多的列。它通常会改善SELECT查询性能,并且也会避免一些逻辑删除问题(因为你将在分区级别删除,除非你当然重新创建分区)。