特定列的 Cassandra where 子句 - 最佳方法
Cassandra where clause for specific column - best approach
在我的 cassandra 数据库中搜索具有特定 PID 的记录时,我需要使用 where 子句
id = uuid
pid= Property Id (text)
created_at = timestamp
我需要找到特定 属性 ID 的前 5 条记录。所以我创建的 table 看起来像这样。
CREATE TABLE property_tax (
id uuid,
state text,
area text,
balance_type text,
created_at timestamp,
created_by text,
last_paid_at timestamp,
max_tax float,
min_tax float,
pid text,
prev_balance float,
prev_interest float,
property_type text,
tax_cess float,
tax_year timestamp,
total_paid float,
total_paid_cess float,
total_paid_tax float,
PRIMARY KEY (pid,created_at,id)
);
我的查询如下所示
select * from property_tax where pid = 'property1' ORDER BY created_at DESC LIMIT 5;
它按照我的要求工作,但我的方法正确吗?还是需要改变。将来是否会出现任何性能问题。我正在查看 5 亿条记录并且还在增长。
新编辑:
我添加了两列1.state 2.area
该州将有多个地区
属性 ID(pid)会有多条记录不超过100条
So, I need to query TABLE property_tax for below
1. Find all the pid
2. find all the pid in the area
3. find all the pid in the state
4. find Limit 5 for pid (ORDER_BY created_at DESC)
非常感谢
沙市
如果您总是以这种方式进行查询,请添加 WITH CLUSTERING ORDER BY (created_at DESC);
这样您就不需要倒序读取(效率更高一点)。但那是一个很好的查询 table.
考虑到它的 5 亿 pid,你的意思是这会很好地工作。如果它的 5 亿个 ID 在一个 pid 中,您最终可能会得到一个非常宽的分区,这会影响性能。
在我的 cassandra 数据库中搜索具有特定 PID 的记录时,我需要使用 where 子句
id = uuid
pid= Property Id (text)
created_at = timestamp
我需要找到特定 属性 ID 的前 5 条记录。所以我创建的 table 看起来像这样。
CREATE TABLE property_tax (
id uuid,
state text,
area text,
balance_type text,
created_at timestamp,
created_by text,
last_paid_at timestamp,
max_tax float,
min_tax float,
pid text,
prev_balance float,
prev_interest float,
property_type text,
tax_cess float,
tax_year timestamp,
total_paid float,
total_paid_cess float,
total_paid_tax float,
PRIMARY KEY (pid,created_at,id)
);
我的查询如下所示
select * from property_tax where pid = 'property1' ORDER BY created_at DESC LIMIT 5;
它按照我的要求工作,但我的方法正确吗?还是需要改变。将来是否会出现任何性能问题。我正在查看 5 亿条记录并且还在增长。
新编辑:
我添加了两列1.state 2.area 该州将有多个地区
属性 ID(pid)会有多条记录不超过100条
So, I need to query TABLE property_tax for below
1. Find all the pid
2. find all the pid in the area
3. find all the pid in the state
4. find Limit 5 for pid (ORDER_BY created_at DESC)
非常感谢 沙市
如果您总是以这种方式进行查询,请添加 WITH CLUSTERING ORDER BY (created_at DESC);
这样您就不需要倒序读取(效率更高一点)。但那是一个很好的查询 table.
考虑到它的 5 亿 pid,你的意思是这会很好地工作。如果它的 5 亿个 ID 在一个 pid 中,您最终可能会得到一个非常宽的分区,这会影响性能。