cql3—cassandra中主键的过滤

5ssjco0h  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(753)

我有下表:

CREATE TABLE tab1 (id int PRIMARY KEY, price int, name text);

以下查询返回错误:

SELECT name FROM tab1 WHERE id > 5;
SELECT name FROM tab1 WHERE id > 5 ALLOW FILTERING;

我该怎么修?

byqmnocz

byqmnocz1#

SELECT name FROM tab1 WHERE id > 5 ALLOW FILTERING; 不会给出错误,因为您正在使用 allow filtering . 如果您的查询需要使用 allow filtering ,然后需要根据查询重新设计表。允许筛选不是查询表的有效方法,特别是在生产环境中。请检查这里 SELECT name FROM tab1 WHERE id > 5; 会给你一个错误
[无效查询]message=“无法执行此查询,因为它可能涉及数据筛选,因此可能具有不可预知的性能。如果要在性能不可预测的情况下执行此查询,请使用“允许筛选”
原因是;cassandra的工作原理与关系数据库不同。表结构不允许您运行任何想要运行的查询,因此您可以根据查询对表进行建模。
请在这里查看where子句的详细信息。如文件所述 The partition key columns support only two operators: = and IN ,在您的情况下,您正在使用 greater ,这会导致出现错误。

相关问题