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
的表执行得更差。是故意的。