由于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)

您必须指定所有measureidstatenamereportyear才能查询数据。这将返回一个分区的所有行:

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/中解释了原因。干杯!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...