Таблица Cassandra - выберите запрос с предложением where

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?

1 ответ

Вы должны сначала создать индекс по нему.

Помните, когда не следует использовать индекс:

  • Для столбцов с большим количеством элементов, потому что вы запрашиваете огромный объем записей для небольшого числа результатов
  • В колонке Low-Cardinality
  • В таблицах, которые используют столбец счетчика
  • На часто обновляемом или удаленном столбце
  • Чтобы найти строку в большом разделе, если не запросить узко. См. Проблемы с использованием индекса для поиска строки в большом разделе, если только узкие вопросы не приведены ниже.

В твоем случае 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

Другие вопросы по тегам