Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 是否获取时间序列表中的最后一行?_Cassandra_Cqlsh - Fatal编程技术网

Cassandra 是否获取时间序列表中的最后一行?

Cassandra 是否获取时间序列表中的最后一行?,cassandra,cqlsh,Cassandra,Cqlsh,我已经能够获得时间序列表的最后一行,如下所示: SELECT * from myapp.locations WHERE organization_id=1 and user_id=15 and date='2017-2-22' ORDER BY unix_time DESC LIMIT 1; 这很好,但是,我想知道执行orderby的性能和开销,因为行已经排序,我只是用它来获取最后一行,在我的例子中这是开销吗 如果我不使用orderby,我将始终获得表中的第一行,因此,我想我可以用另一种方式

我已经能够获得时间序列表的最后一行,如下所示:

SELECT * from myapp.locations WHERE organization_id=1 and user_id=15 and date='2017-2-22'  ORDER BY unix_time DESC LIMIT 1;
这很好,但是,我想知道执行orderby的性能和开销,因为行已经排序,我只是用它来获取最后一行,在我的例子中这是开销吗

如果我不使用
orderby
,我将始终获得表中的第一行,因此,我想我可以用另一种方式使用
INSERT
,例如:INSERT总是在表的开头而不是结尾


有什么建议吗?我是否可以在不担心性能的情况下使用orderby?

只需定义集群键顺序即可

如以下模式所示:

CREATE TABLE locations (
    organization_id int,
    user_id int,
    date text,
    unix_time bigint,
    lat double,
    long double,
    PRIMARY KEY ((organization_id, user_id, date), unix_time)
) WITH CLUSTERING ORDER BY (unix_time DESC); 
因此,默认情况下,您的数据将按unix_time desc排序,无需在查询中指定
现在,您可以使用以下查询获取最后一行:

SELECT * from myapp.locations WHERE organization_id = 1 and user_id = 15 and date = '2017-2-22' LIMIT 1;

如果该表的查询模式总是
orderbyunix\u time DESC
,那么就处于时间序列逆序的情况下,我可以说您的模型不准确(没有错)


没有理由不在表定义中通过UNIXYTIME DESC/<代码>按顺序添加“<代码>”,在我看来,UnxyTimeDESC/代码>的顺序将最多与这些用例的明确含义相一致(我认为它会更糟)。.

向我们展示您的表模式:
好吧,我认为它的性能会更差
您的意思是按unix\u time DESC的集群顺序进行的
会对性能产生不良影响吗?@simo:no,我的意思是,使用
ORDER BY unix\u time DESC
的查询将比使用
ORDER BY unix\u time DESC
的表执行得更差。是故意的。