Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra-简单键和复合键的效率差异_Cassandra_Datastax_Cql_Cassandra 2.0_Nosql - Fatal编程技术网

Cassandra-简单键和复合键的效率差异

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'; 但要查找组中的所有用户

我在理解这篇文章中的一件事时遇到了问题-

练习-我们希望通过groupname获取所有用户

解决方案:

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
    定义为集群键提供:

  • 在组内按
    用户名
    排序的功能

  • 在组中查询特定
    用户名的功能

  • 在一个组中添加多个
    用户名的功能


  • 好的,我理解,但这种排序是否会使按组名搜索用户更快?不,它不会改变任何东西。群集顺序在磁盘顺序上排列,因此您的记录总是被排序的。但升序比降序更有效。好吧,我理解,但这种排序是否会使按组名搜索用户更快?不,它不会改变任何东西。群集顺序在磁盘顺序上排列,因此您的记录总是被排序的。但升序比降序更有效。这就是我想知道的。非常感谢。这就是我想知道的。非常感谢你。