Cassandra 允许在 C# 中进行过滤
Cassandra allow filtering in C#
首先,我是 Cassandra 数据库的新手并且已经阅读了手册。现在我正在构建一个基本页面以将几行 select 插入到我的新数据库中。数据库仅包含 1 table,一个用户 table,如下所示:
接下来,我使用以下代码从此 table 检索数据:
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
附加信息:无法执行此查询,因为它可能涉及数据过滤,因此可能具有不可预测的table 性能。如果您想在性能不可预测的情况下执行此查询,请使用 ALLOW FILTERING
但我从手册中了解到,允许过滤不应应用于此查询,所以基本上为什么会发生这种情况?
还有一个更重要的问题,我该如何解决这个错误?
更新:Table 架构如下所示,
Table 用户(
user_id 文本主键,
first_name 文字,
last_name 文本);
But what I understand from the manual is that allow filtering should not apply on this query, so basically why is this happening?
恐怕你的理解是错误的。您想要过滤非主键列。在 Cassandra 中,您需要为此添加 ALLOW FILTERING
。
你能试试吗
select * from users where last_name ='Jansen' ALLOW FILTERING
但请记住这等同于做
select * from users
并从结果中过滤数据。所以这是一个非常繁重的操作,会对性能产生巨大影响。
首先,我是 Cassandra 数据库的新手并且已经阅读了手册。现在我正在构建一个基本页面以将几行 select 插入到我的新数据库中。数据库仅包含 1 table,一个用户 table,如下所示:
接下来,我使用以下代码从此 table 检索数据:
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
附加信息:无法执行此查询,因为它可能涉及数据过滤,因此可能具有不可预测的table 性能。如果您想在性能不可预测的情况下执行此查询,请使用 ALLOW FILTERING
但我从手册中了解到,允许过滤不应应用于此查询,所以基本上为什么会发生这种情况?
还有一个更重要的问题,我该如何解决这个错误?
更新:Table 架构如下所示, Table 用户( user_id 文本主键, first_name 文字, last_name 文本);
But what I understand from the manual is that allow filtering should not apply on this query, so basically why is this happening?
恐怕你的理解是错误的。您想要过滤非主键列。在 Cassandra 中,您需要为此添加 ALLOW FILTERING
。
你能试试吗
select * from users where last_name ='Jansen' ALLOW FILTERING
但请记住这等同于做
select * from users
并从结果中过滤数据。所以这是一个非常繁重的操作,会对性能产生巨大影响。