- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个电子邮件网络应用程序,但在想出一个能够快速计算每个文件夹未读电子邮件数量的架构时遇到了困难。
我目前的架构如下所示:
CREATE TABLE emails(id INT, user_id INT, folder INT,
read_on TIMESTAMP, raw_email_filename VARCHAR(128));
要获取每个文件夹的未读计数,我可以运行如下查询:
SELECT count(*) FROM email WHERE user_id =? AND folder IN (?..) AND read_on IS NULL;
但是,鉴于我的索引是(user_id,文件夹)
,这必须遍历每个文件夹上的所有电子邮件才能获取计数。
我正在考虑添加一个索引(user_id,folder, read_on)
,但是当我只对感兴趣时,
值。read_on
的条目太多了read_on
的 code>NULL
有更好的方法吗?也许通过非规范化?在 Redis 中进行计数或者其他什么?
最佳答案
我会考虑
INDEX(user_id, read_on, folder)
构建最佳索引的准则是首先列出用=
测试的列(IS NULL
也算这样),然后INs
(文件夹
),然后是一个范围(您没有任何范围)。
不必担心 read_on IS NOT NULL
条目的索引条目被浪费;它们会使磁盘变得困惑,但不会影响性能。
另一方面,当您更改 read_on
(通过 UPDATE
?)时,会受到轻微影响,因为我建议的 INDEX
中的一个条目> 需要从索引 BTree 中的一个位置移动到另一个位置。同样,这可能不值得担心。
您不想使用GROUP BY
吗?
SELECT folder, COUNT(*)
FROM emails
WHERE user_id = ?
AND folder IN (...)
AND read_on IS NULL
GROUP BY folder;
执行解释选择...
。对于我的 INDEX
,EXPLAIN
可能会说 Using index
,表示“覆盖”索引。这就是所有所需的列都在索引中的地方。
有关索引创建的更多信息:http://mysql.rjweb.org/doc.php/index_cookbook_mysql
关于mysql - 用于计算每个邮箱未读电子邮件数量的数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55909083/
我正在尝试实现类似于电子邮件中的已读/未读的功能。我如何通过使用 jquery、php 和 mysql 来实现。我想分步执行的操作: 1- 当我单击 html 表中的一行时,我更改了此消息在数据库中的
如何确定消息状态(已读/未读)。聊天是通过 XMPP 协议(protocol)实现的。 最佳答案 XEP-0184 : Message Delivery Receipts 支持在消息已送达时通知发件人
上下文:我们正在实现一个新闻应用程序。现在,您可以假设所有用户的新闻都是相同的,并根据我们设置的参数(根据趋势和日期)维护订单。 问题:我们不确定跟踪用户阅读内容的最佳实现是什么。我们希望能够配置一种
好吧,另一个有趣的问题是 50 号公路。 我们想实现一个真正的论坛灯泡系统,其中用户未读的帖子(在创建用户帐户后)显示为未读,直到该状态被清除或直到用户阅读它们。 我们认为最好和最简单的方法是实现一个
我正在使用来自 google reader's API 的数据开发应用程序并使用 GData用于登录。 我希望能够将表格单元格内的帖子标记为已读/未读,但我发现这主要是未记录的,很难找到解决方案,有什
我的 C 程序已从 Linux 上的 TCP 套接字读取(使用 read(2) 或 recv(2))几个字节。是否可以将这些字节推回,以便后续的 read(2) 和 recv(2) 调用(在我无法控制
我是一名优秀的程序员,十分优秀!