Iva*_*ras 2 cql cassandra cql3
我有一台带有Cassandra 3.9和2桌子的开发机器,一台有~~ 400,000条记录,另一条有大约40,000,000条记录.他们的结构不同.
他们每个都在字段x上有一个二级索引,我正在尝试运行表单的查询SELECT MAX(x) FROM table.在第一个表上,查询需要几秒钟,而在第二个表上,它会超时.
我的经验是关系数据库,这些查询是微不足道和快速的.所以在Cassandra中,看起来索引不用于执行这些查询?还有其他选择吗?
在卡桑德拉聚合功能,例如MIN,MAX,COUNT,SUM或AVG在无specifing分区键的表是一种不好的做法.相反,您可以使用另一个表来存储两个表的x字段的最大值.
但是,您必须添加一些客户端逻辑,以便在运行INSERT或UPDATE语句时在另一个表中维护此最大值.
表格结构:
CREATE TABLE t1 (
pk text PRIMARY KEY,
x int
);
CREATE TABLE t2 (
pk text PRIMARY KEY,
x int
);
CREATE TABLE agg_table (
table_name text PRIMARY KEY,
max_value int
);
Run Code Online (Sandbox Code Playgroud)
因此,使用此结构,您可以获得表的最大值:
SELECT max_value
FROM agg_table
WHERE table_name = 't1';
Run Code Online (Sandbox Code Playgroud)
希望这可以帮到你.
| 归档时间: |
|
| 查看次数: |
479 次 |
| 最近记录: |