【发布时间】:2018-12-18 14:43:08
【问题描述】:
我一直在阅读 Cassandra 中的索引,但在为集合、列表或地图等集合创建索引时,我有点困惑。
假设我有下表和用户索引,如下所示
CREATE TABLE chatter.channels (
id text PRIMARY KEY,
users set<text>
);
CREATE INDEX channels_users_idx ON chatter.channels (values(users));
INSERT INTO chatter.channels (id, users) VALUE ('ch1', {'jeff', 'jenny'});
在文档中,至少我到目前为止发现的内容表明,这可能会对性能产生巨大影响,因为索引是在节点上本地创建的。并且给出的所有示例都查询如下表
SELECT * FROM chatter.channels WHERE users CONTAINS 'jeff';
据我了解,这会影响性能,因为未指定分区键并且必须查询所有节点。但是,如果我要发出如下查询
SELECT * FROM chatter.channels WHERE id = 'ch1' AND users CONTAINS 'jeff';
(给出分区键)那么我的性能还会受到影响吗?
我怎样才能自己检查呢?在 SQL 中,我可以运行 EXPLAIN 并获得一些有用的信息。 Cassandra 有类似的东西吗?
【问题讨论】:
标签: cassandra