【发布时间】:2011-12-10 04:31:51
【问题描述】:
我正在处理一个我允许每个主题只有 100 个 last cmets 的案例
如果一个主题已经有 100 个 cmets,并且我有一个新评论,我想删除 100 cmets 链中的第一个评论并添加新评论,这是一个示例:
1,2,3 .... 99 , 100
2,3,4 ....100 , 101
如您所见,远远落后于其他评论的第一条评论被删除,而新评论则进入了 100 cmets 链
问题从这里开始,如果我在我的案例论坛中,并且这个论坛有数十万个主题,它可以达到数百万个 cmets ,这意味着如果我检查每个新收到的评论有多少 cmets 将导致每添加一条评论都会减慢网站速度,我怎样才能最小化数据库查询?有没有系统/已知的方法来面对这种事情?
【问题讨论】:
-
如果你的表现有问题,我认为你不应该限制或删除一些东西,它不可能是出路。尝试找出具体导致您的应用变慢的原因并首先对其进行优化。
-
您可能需要考虑不删除 cmets,而只显示最后 100 个 cmets。
-
假设您有一个名为
ts的字段,它存储了添加评论时的时间戳。让该列在数据库中建立索引,然后执行 select * from cmets where .... order by ts desc limit 100 ! -
我同意 user973254 和 Juhana,删除 cmets 可能不是最好的主意。如何创建一个只能容纳 100 cmets 的单独表格并实施 MarcB 下面提到的内容?当您达到 100 条评论时,您会在其中删除最旧的评论。而不是每次需要获得前 100 个 cmets 时,您只需参考此表。
标签: php jquery mysql database coding-style