Как проверить, является ли значение поля непервичного ключа «A» или «B» с запросом Cassandra CQL? (Я использую Cassandra 2.0.1)Cassandra CQL-запрос проверяет несколько значений
Вот определение таблицы:
CREATE TABLE my_table (
my_field text,
my_field2 text,
PRIMARY KEY (my_field)
);
Я пробовал:
1> SELECT * FROM my_table WHERE my_field2 IN ('A', 'B');
2> SELECT * FROM my_table WHERE my_field2 = 'A' OR my_field = 'B' ;
Первый не смог с этим messeage:
Bad Request: IN predicates on non-primary-key columns (my_field2) is not yet supported
Вторая неудача, потому что Cassandra CQL не поддерживает OR ключевое слово
Я не мог заставить этот простой запрос работать (с довольно простым способом). Я очень расстроен, имея дело с CQL-запросами в целом. Это потому, что Кассандра недостаточно зрелая и имеет очень плохую поддержку с запросами, или это я должен изменить образ мышления?
Спасибо за ваш ответ.Однако номер 3 (с явным индексом) не работает. – user2122264
Для номера 2 он, вероятно, может быть использован в качестве обходного пути в некоторых простых случаях. Но, с другой стороны, это может создать новые проблемы: 1> при вставке, если вы дадите новое значение my_field2, оно создаст новую строку в таблице вместо обновления строки, таблица может стать больше и больше , 2> что делать, если я хочу делать такие же запросы для my_field3, my_field4, ... my_fieldn. Если я все эти столбцы в одной таблице, как мне указать первичные ключи (кажется, это будет грязно)? Или я должен создать отдельную таблицу для каждого из «my_field»? – user2122264
часто вы обнаружите, что вы будете писать одни и те же данные в несколько таблиц в разных формах. Было бы нередко записывать те же данные в 3 ... 4 ... 5 разных таблиц для поддержки различных типов запросов. –