我有一些问题让我的大脑围绕着 CQL。我一直在尝试在 CQL3 中使用列切片(我认为这是正确的术语),但所有关于它的文档似乎都参考了 CQL2。
例如我有下表:
CREATE TABLE eventindex (
key uuid,
column1 int,
value uuid,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
现在,在 CQL2 中,我可以执行以下操作:
select '1234567890'..'1234567895' from eventindex;
它返回所有行范围内的所有列
现在,在 CQL3 中我不能这样做(至少,不能在 cqlsh 上),但我可以这样做:
select value from eventindex WHERE column1 > 1234567890 AND column1 <= 1234567895 allow filtering;
这让我得到了基本相同的信息,但格式略有不同。
问题是——这些是等价的吗?如果我不添加允许过滤,cqlsh 会警告我有关性能问题的事实告诉我,CQL2 版本更有效,并且我的 CQL3 查询运行方式不同,但我真的无法找到一个直接的答案来确认我的直觉在这里。
编辑:让我担心的具体事情是运行 CQL2 查询不会引起 cqlsh 的抱怨,但是运行 CQL3 查询而不“允许过滤”会使 cqlsh 由于担心性能不可预测而拒绝执行查询。