Hi Chandra,

I will comment on some points. Someone else can take remaining ones:


1. Secondary Index are only useful when data returned by the index query is in 
hundreds. Fetching large data using secondary index would be very slow. 
Secondary indexes dont scale well.


2.token query should be of form:


Where token(key) > «some token»



You are again applying token function on right side of comparison operator and 
thats why 

getting unexpected results.



Thanks

Anuj



Sent from Yahoo Mail on Android

From:"Chandra Sekar KR" <chandraseka...@hotmail.com>
Date:Thu, 19 Nov, 2015 at 3:16 pm
Subject:Range scans

Hi,


I would like to run a range scan on timestamp column b with secondary indexes 
without passing the partition key. I'm aware that Cassandra does not support 
range scans on secondary indexes unless one more column (primary/secondary 
index) clause with an = operator is supplied.


CREATE TABLE test (
    a timeuuid PRIMARY KEY,
    b timestamp,
    c varint
);
CREATE INDEX indx_b ON test (b);


INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000000);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000001);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000002);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000003);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000004);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000005);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000006);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000007);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000008);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000009);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000010);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000011);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000012);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000013);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000014);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000015);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000016);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000017);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000018);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000019);

INSERT INTO TEST(a,b,c) VALUES (now(), unixTimestampOf(now()), 1000020);


Also, is there any alternate way of running range scans on column a using TOKEN 
function, similar to below. I tried running the same, but was getting 
unexpected results.


SELECT * FROM test 

  WHERE TOKEN(a) >= TOKEN(3b84a5b0-8e8d-11e5-b494-c9d29cfa4efd) 

  AND TOKEN(a) <= TOKEN(3b8c94f0-8e8d-11e5-b494-c9d29cfa4efd);


Regards, Chandra Sekar KR

Reply via email to