Cassandra-简单键和复合键的效率差异
我在理解这篇文章中的一件事时遇到了问题- 练习-我们希望通过groupname获取所有用户 解决方案:Cassandra-简单键和复合键的效率差异,cassandra,datastax,cql,cassandra-2.0,nosql,Cassandra,Datastax,Cql,Cassandra 2.0,Nosql,我在理解这篇文章中的一件事时遇到了问题- 练习-我们希望通过groupname获取所有用户 解决方案: CREATE TABLE groups ( groupname text, username text, email text, age int, PRIMARY KEY (groupname, username) ); SELECT * FROM groups WHERE groupname = 'footballers'; 但要查找组中的所有用户
CREATE TABLE groups (
groupname text,
username text,
email text,
age int,
PRIMARY KEY (groupname, username)
);
SELECT * FROM groups WHERE groupname = 'footballers';
但要查找组中的所有用户,我们可以设置:主键(groupname)
,它也可以工作
在这种情况下,为什么需要群集密钥(用户名)?我知道,当我们将username设置为集群键时,我们可以在
WHERE
子句中使用它。但是,仅按组名查找用户在查询效率方面,PRIMARY KEY(groupname)
和PRIMARY KEY(groupname,username)
之间有什么区别吗?如果要按组名查询,则不需要集群键
如果添加群集键(本例中为用户名),则按用户名对组名的行进行排序。如果要按组名进行查询,则不需要群集键
如果添加群集键(本例中为用户名),则将按用户名对组名的行进行排序。群集键提供多种好处:查询灵活性、结果集排序(在分区键内)和扩展的唯一性 但要查找组中的所有用户,我们可以设置:
主键(groupname)
试一下。仅使用groupname
作为主键创建一个新表,然后尝试为每个组插入多个username
s。您将发现只有一个组,并且该组中的每个新用户都将覆盖username
列
但是只通过groupname
查找用户主键(groupname)
和主键(groupname,username)
在查询效率方面有什么区别吗
如果主键(groupname)
执行得更快,最可能的原因是因为只能返回一行
在这种情况下,将username
定义为集群键提供:
用户名
排序的功能用户名的功能
用户名的功能
集群键提供了多种好处:查询灵活性、结果集排序(在分区键内)和扩展的唯一性 但要查找组中的所有用户,我们可以设置:
主键(groupname)
试一下。仅使用groupname
作为主键创建一个新表,然后尝试为每个组插入多个username
s。您将发现只有一个组,并且该组中的每个新用户都将覆盖username
列
但是只通过groupname
查找用户主键(groupname)
和主键(groupname,username)
在查询效率方面有什么区别吗
如果主键(groupname)
执行得更快,最可能的原因是因为只能返回一行
在这种情况下,将username
定义为集群键提供:
用户名
排序的功能用户名的功能
用户名的功能
好的,我理解,但这种排序是否会使按组名搜索用户更快?不,它不会改变任何东西。群集顺序在磁盘顺序上排列,因此您的记录总是被排序的。但升序比降序更有效。好吧,我理解,但这种排序是否会使按组名搜索用户更快?不,它不会改变任何东西。群集顺序在磁盘顺序上排列,因此您的记录总是被排序的。但升序比降序更有效。这就是我想知道的。非常感谢。这就是我想知道的。非常感谢你。