当前位置: 首页 > 知识库问答 >
问题:

使用主键和次键约束查询Cassandra

东方旺
2023-03-14

我在Cassandra中有一个表,定义为

CREATE TABLE foo ("A" text, "B" text, "C" text,
    "D" text, "E" text, "F" text,
    PRMIARY KEY ("A", "B"),
    INDEX ("C"))

我在这张表中插入了数十亿条记录。现在我想用CQL查询表

SELECT * FROM foo WHERE "A"='abc' AND "B"='def' AND "C"='ghi'
    null

谢谢!

共有1个答案

顾鸣
2023-03-14

注意:对于我的示例,我去掉了列名周围的双引号。除了在列名中保留大小写(而不是值)之外,它真的没有做任何事情,只会把工作搞得一团糟。

是否存在同时指定主键和次键的查询CQL的约束?

首先,我需要弄清楚你的“主键”和“次键”到底是什么。如果您引用C作为“辅助键”,那么“yes”可以,但有一些限制。如果您指的是分区键(A)和集群键(B),那么可以。

aploetz@cqlsh:stackoverflow2> SELECT * FROM foo WHERe A='abc' AND B='def';

 a   | b   | c   | d   | e   | f
-----+-----+-----+-----+-----+-----
 abc | def | ghi | jkl | mno | pqr

(1 rows)
aploetz@cqlsh:stackoverflow2> SELECT * FROM foo WHERe A='abc';

 a   | b   | c   | d   | e   | f
-----+-----+-----+-----+-----+-----
 abc | ddd | ghi | jkl | mno | pqr
 abc | def | ghi | jkl | mno | pqr

(2 rows)
aploetz@cqlsh:stackoverflow2> SELECT * FROM foo WHERE A='abc' AND B='def' AND C='ghi';

 a   | b   | c   | d   | e   | f
-----+-----+-----+-----+-----+-----
 abc | def | ghi | jkl | mno | pqr

(1 rows)

如果我在CQL中指定了分区键,这里是“a”='abc'(如果错误,请纠正我),为什么C*仍然尝试其他显然不保存数据的分区?

我不认为这是问题所在。您将它限制为单个分区,因此它应该只查询abc分区以外的数据。

我在这张表中插入了数十亿条记录。

CREATE TABLE foo (A text, B text, C text, D text, E text, F text,
  PRMIARY KEY (A, B, C));
aploetz@cqlsh:stackoverflow2> SELECT * FROM foo WHERE A='abc' AND B='def' AND C='ghi';

它不仅应该工作,而且不应该超时,而且应该很快。

 类似资料:
  • 我正在使用JOOQ(JOOQ中的新手)在spring boot项目中使用Rest API在运行时创建数据库。在其中一种情况下,我需要创建一个具有复合主键的表,该主键可以是多个列的组合。我使用下面的代码创建约束- 我已经有

  • mysql 5.7 外键约束 主表:部门表 从表:员工表 添加外键:从表 dep_id 关联 主表 id >[danger] CASCADE > 级联更新 主表数据更新从表会更新外键 级联删除 主表数据删除,从表会一起删除

  • 本文向大家介绍如何在Oracle中使用主键约束和外键约束来增强数据库完整性?,包括了如何在Oracle中使用主键约束和外键约束来增强数据库完整性?的使用技巧和注意事项,需要的朋友参考一下 问题: 您要使用主键约束和外键约束来强制Oracle中的数据库完整性。 解 在以完整性定义的表上执行的任何DML语句(INSERT,UPDATE或DELETE)都有助于确保表中的行保持其完整性。 让我们看一些显示

  • 我有以下问题,我有一个已经存在的表,有三个字段field1,field2,field3。Field1实际上是另一个表的外键(@OneToOne)。所有字段2和字段3都可以为空,所以我不能为所有三个字段设置主键。在数据库中,field1 field2 field3有一个唯一约束。 我用JPA/Hibernate尝试了几种解决方案,但没有找到一个好的。如果不定义@Id,JPA当然无法工作。在@Embe

  • 我有个任务我必须 创建特定情况的实体关系图,然后 编写SQL代码来表示图表 我不熟悉SQL Server,但我有一个表,它有一个主键和两个外键,与讲师有一个强制关系,与

  • 使用JPA2。0(通过Hibernate 4),我可以使用EntityManager在数据库中查询查询条件为主键的记录。查找(java.lang.Class entityClass,java.lang.Object primaryKey)。但是,如果查询条件不是主键(例如,选择city值为“london”的所有记录),我是否必须创建一个TypedQuery并显式提供SQL语句?我应该采取什么最佳做