我有张桌子,
CREATE TABLE log (
uuid uuid,
time timeuuid,
user text,
....
PRIMARY KEY (uuid, time, user)
) 和
使用‘org.apache.curandra.index.sasi.SASIIndex’在日志(Time)上创建自定义索引time_idx;
那么我要按时间选择基准。
从日志中选择*时间>84bfd880--B001-11e6-918c-24eda6ab1677;
没有返回,它将返回如果我使用相等(=)。我走错哪一步了?
发布于 2016-11-21 08:23:47
您需要将time_idx索引作为稀疏索引。
稀疏索引的目的是提高查询大而密集的数字范围的性能,例如每毫秒插入的数据的时间戳。如果数据是数字的,则数以百万计的列值具有少量的分区键来描述数据,并且范围查询将针对索引执行,那么稀疏是最好的选择。对于不符合此条件的数字数据,前缀是最佳选择。
删除time_idx并使用以下查询创建
CREATE CUSTOM INDEX time_idx on Log(time) USING 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = { 'mode': 'SPARSE' };现在您可以使用不等式>=、>和<=进行查询。
限制:稀疏索引仅用于数值数据,因此类似于查询不适用。
还有一件事你的表创建是不对的。它应该是
CREATE TABLE log (
uuid uuid,
time timeuuid,
user text,
PRIMARY KEY (uuid, time, user)
) https://stackoverflow.com/questions/40715529
复制相似问题