0
想象我有這樣的一個表:索引卡桑德拉查詢
CREATE TABLE test(
name TEXT,
tag TEXT,
id UUID,
parameter INT,
PRIMARY KEY((name, tag, id), parameter)
);
和索引
CREATE INDEX parameter_idx on test(parameter);
有了這樣的查詢:
SELECT * FROM test WHERE name = 'name'
AND tag = 'tag'
AND parameter = value;
它是正確的,因爲索引將使用,返回多個分區,然後這些分區將被過濾,因此要求ALLOW FILTERING
?
相反查詢像這樣的:
SELECT * FROM test WHERE name = 'name'
AND tag = 'tag'
AND id = some_id,
AND parameter = value;
將不會使用索引,一個分區會被發現,只相當於parameter = value
一些行會被退回。
這一切是否正確?
您的第一個查詢無效。您始終必須提供分區鍵的所有列。 – Ralf
它確實有效,因爲'parameter'是一個索引並且因爲允許過濾。除了潛在的錯字以外,問題中的所有內容都適用,我只想確認我明白爲什麼以及如何。 –
啊,對。我對它的工作原理與你的一樣。但我的CQL體驗有限...... – Ralf