Фильтрация по первичному ключу в Кассандре - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть следующая таблица:

CREATE TABLE tab1 (id int PRIMARY KEY, price int, name text);

Следующие запросы возвращают ошибки:

SELECT name FROM tab1 WHERE id > 5;
SELECT name FROM tab1 WHERE id > 5 ALLOW FILTERING;

Как это исправить?

1 Ответ

2 голосов
/ 25 апреля 2020

SELECT name FROM tab1 WHERE id > 5 ALLOW FILTERING; не выдаст ошибку, так как вы используете allow filtering. Если ваши запросы требуют использования allow filtering, то вам необходимо изменить дизайн таблиц в соответствии с запросами. Разрешить фильтрацию - неэффективный способ запроса ваших таблиц, особенно на производстве. пожалуйста, отметьте здесь

SELECT name FROM tab1 WHERE id > 5; даст вам ошибку

[Invalid query] message = "Невозможно выполнить этот запрос, так как он может включать фильтрацию данных и таким образом может иметь непредсказуемую производительность. Если вы хотите выполнить этот запрос, несмотря на непредсказуемость производительности, используйте ALLOW FILTERING "

Причина в том, что; Кассандра не работает так, как работает реляционная база данных. Структура таблицы не позволяет вам выполнять любой запрос, который вы хотите, поэтому вы смоделируете свои таблицы в соответствии с запросами.

Пожалуйста, проверьте здесь детали предложения where . Как указано в документации The partition key columns support only two operators: = and IN, в вашем случае вы используете greater, что приводит к ошибке.

...