2017-04-27 62 views
0
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卡桑德拉表 - 与where子句

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? 
+0

是session_token是唯一的? –

+0

不是唯一的。它不是唯一的 – v83rahul

+0

是可能的,对于单个session_token有多个用户名? –

回答

0

你必须在它第一次创建索引。

记住,当不使用索引:

  • 在高基数列,因为你再查询记录一个巨大的体积为少数结果
  • 在低基数列的
  • 在使用计数器列的表中
  • 在经常更新或删除的列上
  • 查找大型分区中的行,除非查询范围很窄。除非在下面进行了细致的查询,否则请参阅使用索引查找大型分区中的行的问题。

你的情况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