3
根據this文檔,我嘗試了一個帶有token()函數的select查詢,但它給出了錯誤的結果。Cassandra - 使用token()函數選擇查詢
我使用Cassandra的版本低於
[cqlsh 5.0.1 | Cassandra 2.2.5 | CQL spec 3.3.1 | Native protocol v4]
我試圖令牌查詢下表 -
CREATE TABLE price_key_test (
objectid int,
createdOn bigint,
price int,
foo text,
PRIMARY KEY ((objectid, createdOn), price));
插入的數據 - 表
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,1000,100,'x');
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,2000,200,'x');
insert into nasa.price_key_test (objectid,createdOn,price,foo) values (1,3000,300,'x');
數據 -
objectid | createdon | price | foo
----------+-----------+-------+-----
1 | 3000 | 300 | x
1 | 2000 | 200 | x
1 | 1000 | 100 | x
選擇查詢 -
select * from nasa.price_key_test where token(objectid,createdOn) > token(1,1000) and token(objectid,createdOn) < token(1,3000)
該查詢假設與createdOn 2000返回行,但它返回零行。
objectid | createdon | price | foo
----------+-----------+-------+-----
(0 rows)
按照我的理解,令牌(OBJECTID,createdOn)>令牌(1,1000)和令牌(OBJECTID,createdOn)<令牌(1,3000)應選擇具有分區鍵行值爲1和2000
我的理解是否正確?
@Aron謝謝您的回覆先生。這意味着我們無法在token()函數上進行中繼。你能告訴我們什麼時候我們可以在選擇查詢中使用令牌。 – Gunwant
@Gunwant'token()'當你想查詢整個大表時很有意義。通常,對於大型結果集的查詢將會超時,因此您可以一次查詢令牌範圍以使其更有可能成功。 – Aaron