Я использую Cassandra 3.x и у меня есть следующая таблица:
CREATE TABLE sp_db.prod_tag
(
year int,
name text,
group int,
sn text,
factory_id bigint,
PRIMARY KEY ((year), name, group)
) WITH CLUSTERING ORDER BY (name ASC, group ASC);
Я вставил 1 миллион строк и начал выполнять запросы:
Запрос # 1 - на разделеключ
select count(*)
from sp_db.prod_tag
where year = 2015;
Вывод:
count |
------|
33328 |
Время запроса: ~ 90 мс
Запрос № 2 - один из ключей кластеризации
select count(*)
from sp_db.prod_tag
where group = 104 ALLOW FILTERING;
Результат:
count |
------|
3938 |
Время запроса: ~ 800 мс
Мы не передаем первичный ключ, поэтому Кассандра получает все строки из таблицыи это влияет на производительность.
Пока все хорошо ...
Первый запрос ключа кластеризации:
select count(*)
from sp_db.prod_tag
where name = '06d7d' ALLOW FILTERING;
Результаты:
count |
------|
3 |
Время запроса: ~ 6ms
И вот мое удивление: почему только 6ms?Первичного ключа нет, поэтому этот запрос должен иметь низкую производительность.
Изучая документацию Я не нашел ответа.
Может кто-нибудь объяснить это?