首页 新闻 搜索 专区 学院

我想反老总,大家支持我吧

0
悬赏园豆:30 [已解决问题] 解决于 2009-03-15 16:08

先说一下我的情况吧,我做的数据库中有个留言表,所有用户的留言都在这个表中,现在要让用户每次登录都看到有多少条新留言,只显示多少条就行。但是留言表中没有标识新留言的字段(已有19个字段),我的解决方法是又加了一个表A,这表只有两个字段:用户Id和新留言数new。如果有人给用户P留言,插入留言表一条记录,A表中P用户的new就加一。然后,此用户登录后看到多少新留言后,就清空P用户的new。

后来老总找来个很有经验的人来检查我的数据库,说这样不行,应该添加字段用来标识新留言。我感觉那样不好,因为留言表记录有很多,可能上百万记录,这样的话用count是不是很慢,而且count之后还要把这字段update为已读。如果用户很长时间没上线,有很多新留言,如果超过200条,就要表死锁(这是我刚上网查的)。

我是一个学生没啥经验,我还是觉得我的办法没问题。但是老总一定要让我按那个有经验的人说的做。

大家帮忙看看我该怎么做最好。

这是我第一次博问呀,希望有点收获。

问题补充: 注意:我再补充一下,这只是一条空间留言,不是邮件。一条留言可能只是一个"踩"字或一个表情符号,用不着标识已读未读,只提醒用户有多少人给他留言就行了,用户点一下跳到下面的留言板。所有留言是按时间顺序排在主页下面的。我们不需要知道这条留言是不是新留言,你们帮我分析一下,我该加字段吗。
澍可的主页 澍可 | 初学一级 | 园豆:85
提问于:2009-03-11 10:47
< >
分享
最佳答案
0

楼主的方法是正确的,如果只是想显示数量,楼主的方法效率是比较高的。

用count 统计确实会有性能问题。那位有经验的人说要加字段,你请他说出理由,你看看他主要是考虑哪方面。

eaglet | 专家六级 |园豆:17119 | 2009-03-11 19:34
其他回答(6)
0

似乎要加标示才行,要不然你就显示一个新的留言数,他只看了这个数字,但他实际还没有看留言,你就把新的留言当成已读?似乎不太合理吧。

I,Robot | 园豆:9563 (大侠五级) | 2009-03-11 11:01
0

你自考虑了条数问题,真正的核心在于这条留言是否已经被客户阅读过了!

小猴子 | 园豆:100 (初学一级) | 2009-03-11 11:45
0

你只看到其中一面,但忽略了另一面。

你所说的也是必要的,为了提高性能,在数据多的情况下,实在是不宜实时的去计算数量,所以在用户发送新留言的时候,就把数据加1,在这一点上,你的设计思路,没有问题。

而你们老总说的,也是必要的,不然像一楼跟二楼说的,你怎么去标记已阅读呢?

所以,你应该把你的思路跟你老板的思路结合,当一个用户标记已阅读时,把你的那个数据减一,新发留言时,把数据加一,这样就可以满足需求了。

李.net | 园豆:1072 (小虾三级) | 2009-03-11 15:33
0

该起义时就起义,起义不了就枉义!

Assion Yang | 园豆:232 (菜鸟二级) | 2009-03-11 17:42
0

该起义时就起义,起义不了就枉义!顶顶顶!!!

子夜星辰 | 园豆:1613 (小虾三级) | 2009-03-11 18:03
0

不要反,要多沟通

-------------------------

回头又看了看你写的,问题不是很大,那位仁兄说得有理,未读信息应该用一个字段来表示,因为只有两个状态,就用bit型就够了。

对于将未读设置为已读的操作,快慢取决于你的业务逻辑和操作方式,按理说应该是看一条标记一条,这样的话update只操作一条数据,你可以使用主键做为查询条件,即使千万级数据也是很快的。

如果非要用用户名之类的话,可以在搜索字段上加一个索引,百万的话也没有太大问题。

如果用户数据上到千万以上,考虑表分区,就是这样。

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-03-12 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册