请尝试为未读邮件建模。我有一个user_messages表
CREATE TABLE user_messages ( user text, sender text, message text, read boolean, creation_date timestamp, PRIMARY KEY (user, creation_date) );我怎么知道未读邮件的总数?我是否需要创建一个计数器表并在每次读取消息时更新user_messages表? 我还读到使用select count(*)太贵了,不建议用于生产。我需要帮助。
答案 0 :(得分:2)
您可以使用静态列来保留未读邮件的数量,并在阅读邮件时更新它(但您需要确保它未从2个位置更新)。类似的东西:
CREATE TABLE user_messages (
user text,
unread int static,
sender text,
message text,
read boolean,
creation_date timestamp,
PRIMARY KEY (user, creation_date)
);
然后获取未读消息的计数将是简单查询(或缩小到特定字段):
select * from user_messages limit 1;
并从答案中获取unread
字段。
P.S。关于count(*)
- 当你没有指定分区密钥时,它是昂贵的,但当你在分区内部计算时(在你的情况下如果你有when user = ?
) - 那么它&# 39;更便宜,但由于传输数据仍然会有很大的开销。由于read
标记不是群集列,因此您无法限制它。