Таблица 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