首先,我是Cassandra数据库的新手并阅读了手册 . 现在我正在构建一个基本页面,以便在我的新数据库中插入和选择几行 . 数据库只包含1个表,一个用户表,如下所示:
接下来,我使用以下代码从此表中检索数据:
Connect();
Row result = session.Execute("select * from users where last_name ='Jansen'").First();
Console.WriteLine("{1} {2}", result["first_name"], result["last_name"]);
cluster.Shutdown();
每当我执行select语句时,我都会收到以下错误:
'Cassandra.InvalidQueryException' occurred in Cassandra.dll
附加信息:无法执行此查询,因为它可能涉及数据过滤,因此可能具有不可预测的性能 . 如果要在性能不可预测的情况下执行此查询,请使用ALLOW FILTERING
但是我从手册中理解的是,允许过滤不应该适用于此查询,所以基本上为什么会发生这种情况呢?
而我更重要的问题是,如何修复此错误?
更新:表模式如下所示,表用户(user_id文本PRIMARY KEY,first_name文本,last_name文本);
1 回答
我担心你的理解是错误的 . 您想要过滤非主键列 . 在Cassandra中,您需要为此添加
ALLOW FILTERING
.你能试试
select * from users where last_name ='Jansen' ALLOW FILTERING
但请记住,这相当于执行
select * from users
并从结果中过滤数据 . 因此,这是一项非常繁重的操作,会对性能产生巨大影响 .