2017-04-27 91 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