Cassandra 表 - 使用 where 子句选择查询
Posted
技术标签:
【中文标题】Cassandra 表 - 使用 where 子句选择查询【英文标题】:Cassandra table - select query with where clause 【发布时间】:2017-04-27 08:08:53 【问题描述】:I am trying to create a table in Cassandra.
CREATE TABLE users (
user_name varchar PRIMARY KEY,
password varchar,
gender varchar,
session_token varchar,
state varchar,
birth_year bigint
);
现在如果我想查询我的 session_token = 1000001 的表用户名和密码
Select user_name,password from users where session_token = 1000001;
Will this query work or do I have to create an index on session_token first and then do select query?
【问题讨论】:
session_token 是唯一的吗? 不..它不是唯一的 单个 session_token 有可能有多个用户名吗?? @AshrafulIslam :是的,这是可能的。 【参考方案1】:你必须先在上面创建索引。
记住什么时候不使用索引:
在高基数列上,因为您随后会针对少量结果查询大量记录 在低基数列上 在使用计数器列的表中 在经常更新或删除的列上 除非经过严格查询,否则在大分区中查找行。请参阅使用索引在大分区中查找行时遇到的问题,除非在下面进行了严格查询。在您的情况下,session_token
似乎是高基数列
最好再创建一张表:
CREATE TABLE user_by_session (
session_token varchar,
user_name varchar,
password varchar,
PRIMARY KEY(session_token, user_name)
);
现在可以查询了:
SELECT user_name, password FROM user_by_session WHERE session_token = '1000001';
来源:http://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_when_use_index_c.html#concept_ds_sgh_yzz_zj
【讨论】:
以上是关于Cassandra 表 - 使用 where 子句选择查询的主要内容,如果未能解决你的问题,请参考以下文章
Spark Cassandra 连接器 - where 子句