【发布时间】:2016-07-07 15:37:20
【问题描述】:
假设我有一个具有以下架构的 cassandra 表 xyz:
create table xyz(
xyzid uuid,
name text,
fileid int,
sid int,
PRIMARY KEY(xyzid));
我在列 fileid , sid 上创建索引:
CREATE INDEX file_index ON xyz (fileid);
CREATE INDEX sid_index ON xyz (sid);
我插入数据:
INSERT INTO xyz (xyzid, name , fileid , sid ) VALUES ( now(), 'p120' , 1, 100);
INSERT INTO xyz (xyzid, name , fileid , ssid ) VALUES ( now(), 'p120' , 1, 101);
INSERT INTO xyz (xyzid, name , fileid , sid ) VALUES ( now(), 'p122' , 2, 101);
我想使用索引列删除数据:
DELETE from xyz WHERE fileid=1 and sid=101;
为什么会出现这个错误?
InvalidRequest: code=2200 [Invalid query] message="Non PRIMARY KEY fileid found in where clause"
删除查询需要在where子句中指定主键吗?
Cassandra 是否支持使用二级索引 s 进行删除?
使用二级索引s删除数据需要做什么?
任何可能有帮助的建议。
我正在使用 Data Stax Community Cassandra 2.1.8,但我也想知道 Data Stax Community Cassandra 3.2.1 是否支持使用索引列进行删除
谢谢
【问题讨论】:
-
您真正只通过 PRIMARY KEY 查询的频率是多少?如果这些索引对您来说非常重要,为什么不创建一个使用这些索引列作为 PRIMARY KEY 组件的查询表?
标签: cassandra datastax cqlsh cassandra-3.0