根据用户定义类型中的特定列选择数据

Selecting data based on specific column in user-defined type

所以我有以下列族及其各自的类型:

CREATE TYPE subudt (
    id varint,
    -- snipped --
);

CREATE TYPE udt (
    name text,
    -- snipped --
    subudt frozen <subudt>
);

CREATE COLUMNFAMILY tablename (
    id varint,
    -- snipped --
    udt frozen <udt>,
    PRIMARY KEY (id)
); 

如何在 udt 类型的 name 字段上执行 select 查询?我环顾四周,似乎您不能在 udt 字段上使用 CREATE INDEX,而只能在整个用户定义类型本身上使用。

理想情况下,您在 Cassandra 中根据它将服务的查询对数据进行建模。查询 UDT 中的特定字段,违背了将它们组合在一起的初衷。

是否拥有二级索引将取决于它试图解决的查询类型。性能因解释的不同查询结构而异

简而言之,您不能在特定字段上创建索引,理想情况下应该考虑对数据进行不同的建模。复制数据以服务于不同的查询模式是绝对可以的。假设维护一个全新的 table 来为基于 "names" 的查询提供服务很常见。