【发布时间】:2014-07-15 11:08:27
【问题描述】:
假设一个简单的表有一个插入(或者没有这个插入,并不重要)。
CREATE TABLE test (
x int,
y int,
z int,
PRIMARY KEY (x, y, z)
);
create index z_index on test (z);
insert into test(x, y, z) values (1,2,3);
我很难理解为什么我不能在索引 z 上使用 in 子句进行查询:
cqlsh:test> select * from test where z in (3);
错误请求:PRIMARY KEY 部分 z 不能被限制(前面的部分 y 要么不受限制,要么受非 EQ 关系限制)
可以用一个简单的等于谓词:
cqlsh:test> select * from test where z = 3;
x | y | z
---+---+---
1 | 2 | 3
(0 rows)
我认为在 z 上有一个索引可以保持从 z 的特定值到行的映射,但这个假设似乎是错误的。
为什么这不符合我的预期?我猜索引的工作方式不同。
编辑:我正在使用 [cqlsh 4.1.1 |卡桑德拉 2.0.6 | CQL 规范 3.1.1 | Thrift 协议 19.39.0]
【问题讨论】:
标签: cassandra cql cql3 database nosql