Схема
CREATE TABLE books (
isbn text PRIMARY KEY,
author text
);
insert into books (isbn, author) values ('111', 'Sally');
insert into books (isbn, author) values ('112', 'Fred');
insert into books (isbn, author) values ('113', 'Joe');
С вышеуказанными данными я могу запросить с помощью первичного ключа 111
select * from books where isbn = '111';
Однако, когда я ставлю author
в условии where он выдает ошибку
select * from books where isbn = '111' and author = 'Fred';
Query 1 ERROR: Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING
Я не могу понять, что если данные уже отфильтрованы по первичному ключу (который является только одной записью) почему выдается ошибка?
Во-вторых, если я использую allow filtering
, есть ли какое-либо влияние на производительность?
Редактировать: https://dzone.com/articles/apache-cassandra-and-allow-filtering дал мне некоторую подсказку.