如何解决由于cassandra中的复合分区键而导致查询限制?
如果我有两个表结构,其中一个具有: 设为A
PRIMARY KEY (measureid,statename,reportyear,countyname)
与另一个(让它成为B):
PRIMARY KEY ((measureid,reportyear),countyname)
表结构B对A的查询限制是什么? 在哪些查询中具有复合分区键会带来问题?
解决方法
在表A中,其中:
PRIMARY KEY (measureid,statename,reportyear,countyname)
您可以仅使用measureid
查询表,它将返回statename
的行。具体来说:
SELECT FROM ... WHERE measureid = ?
或者,您也可以使用以下查询:
SELECT FROM ... WHERE measureid = ? AND statename = ?
SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ?
SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ? AND countyname = ?
在表B中,其中:
PRIMARY KEY ((measureid,reportyear),countyname)
您必须指定所有measureid
,statename
,reportyear
才能查询数据。这将返回一个分区的所有行:
SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ?
要检索一个分区的一个特定行:
SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ? AND countyname = ?
为清楚起见,您不能 使用以下查询表B:
SELECT FROM ... WHERE measureid = ?
SELECT FROM ... WHERE measureid = ? AND statename = ?
因为您必须指定分区键的3列。我在这篇帖子https://community.datastax.com/questions/7866/中解释了原因。干杯!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。