Stworzyłem prostą Tabe:Ilość Cassandra CQL Wybierz z LIMIT
CREATE TABLE test (
"type" varchar,
"value" varchar,
PRIMARY KEY(type,value)
);
włożeniu do niego 5 rzędów:
INSERT INTO test(type,value) VALUES('test','tag1')
INSERT INTO test(type,value) VALUES('test','tag2')
INSERT INTO test(type,value) VALUES('test','tag3')
INSERT INTO test(type,value) VALUES('test','tag4')
INSERT INTO test(type,value) VALUES('test','tag5')
wpadłem SELECT * from test LIMIT 3
i działa zgodnie z oczekiwaniami.
type | value
------+------
test | tag1
test | tag2
test | tag3
Kiedy wpadłem SELECT COUNT(*) from test LIMIT 3
, produkuje:
count
-------
5
nie należy powiedzieć 3?
Wydaje się, że Datastax documentation wskazuje, że podanie wartości LIMIT
spowoduje nadpisanie wartości domyślnej wynoszącej 10.000. Dlaczego nie działa w tym przypadku? Jeśli to ma znaczenie, jestem na Cassandra 2.2.5 i uruchomiłem wszystkie zapytania poprzez cqlsh.
Aktualizacja Zarówno kierowca Java i CQLSH zostały przetestowane, aby pokazać, że LIMIT
rzeczywiście nie działa w sposób określony w dokumentacji. Jeśli są czytani pracownicy Datastax, twój wkład byłby bardzo doceniany.
Jeśli 'WYBIERZ COUNT' zawsze zwraca 1 wiersz, a' LIMIT 'klauzula jest bezużyteczna w zapytaniu' SELECT COUNT', nieprawdaż? Dlaczego dokumentacja Datastax dała konkretne przykłady, takie jak "SELECT COUNT (*) Z big_table LIMIT 50000;"? – light
@light, um, masz rację. Dokumentacja sugeruje, że powinieneś otrzymać 3 w wyniku liczenia w połączeniu z klauzulą LIMIT. Ten [artykuł] (http://www.planetcassandra.org/blog/counting-key-in-cassandra/) wyjaśnia, dlaczego stosowanie limitu do liczenia jest dobrą rzeczą. Będę testować na mojej instancji (C * v 2.2.4). Jaka jest twoja wersja C *? – Ralf
Jestem na Cassandra v2.2.5 – light