我在“cassandra”中有一个表chat_matches。并希望将所有消息from_id计数到具有行数的不同to_id(按to_id分组)。
class BaseClass{
void templateMethod(){
methodImplementation();
if(this.base.getType() != typeof(BaseClass)) this.base.methodImplementation();
}
void abstract methodImplementation();
}
class Derived1 : BaseClass{
void override methodImplementation(){
.. do things ..
}
}
class Derived2 : Derived1{
void override methodImplementation(){
.. do more things ..
}
}
答案 0 :(得分:0)
在cassandra中count(*)
是一项非常昂贵的操作,需要扫描所有节点的所有行,只是为了给你计数,并且可以生成超时异常。
所以不要使用count(*)
维护一个像下面那样的计数器表:
CREATE TABLE message_counter (
from_id bigint,
to_id bigint,
count counter,
primary key((from_id, to_id ))
);
当出现新消息时,只需将count的值递增1。
UPDATE message_counter SET count = count + 1 WHERE from_id = 1 AND to_id = 2;
现在,您可以非常有效地从by_id到to_id选择消息计数组
SELECT * FROM message_counter WHERE from_id = 1 AND to_id = 2;