Cassandra表-使用where子句选择查询

Cassandra表-使用where子句选择查询,cassandra,cql,bigdata,Cassandra,Cql,Bigdata,现在如果我想查询表用户名和密码,其中我的session_token=1000001 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

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\u标记
似乎是高基数列

最好创建另一个表:

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?
现在您可以查询:

CREATE TABLE user_by_session (
    session_token varchar,
    user_name varchar,
    password varchar,
    PRIMARY KEY(session_token, user_name)
);

来源:

会话\u令牌是否唯一?否。不是唯一的。对于单个会话\u令牌,可能有多个用户名???@AshrafulIslam:是的,可能。
SELECT user_name, password FROM user_by_session WHERE session_token = '1000001';