MySQL计数性能与javascript对象/数组

MySQL计数性能与javascript对象/数组,javascript,mysql,performance,Javascript,Mysql,Performance,我有一个十分钟长的视频,人们可以停止视频并留下评论。时间(以秒为单位)和注释都保存在数据库中。同一秒可以留下多个注释 当有评论可供查看时,将显示一个图标。我使用的是10秒的窗口,因此在8秒时留下的评论将在3-13秒之间可用 我当前正在使用每2秒轮询一次数据库 选择COUNT(*)作为注释中的COUNT,其中时间介于$time-5和$time+5之间 当有人点击图标查看评论时,我从数据库中检索相关评论 从性能角度来看,从一开始就获取所有注释,构建某种javascript对象或数组,并使用自定义的b

我有一个十分钟长的视频,人们可以停止视频并留下评论。时间(以秒为单位)和注释都保存在数据库中。同一秒可以留下多个注释

当有评论可供查看时,将显示一个图标。我使用的是10秒的窗口,因此在8秒时留下的评论将在3-13秒之间可用

我当前正在使用每2秒轮询一次数据库

选择COUNT(*)作为注释中的COUNT,其中时间介于$time-5和$time+5之间

当有人点击图标查看评论时,我从数据库中检索相关评论

从性能角度来看,从一开始就获取所有注释,构建某种javascript对象或数组,并使用自定义的between方法对对象进行迭代会更好吗


我知道这取决于我处理的评论数量,但如果MySQL计数查询无关紧要,我不想经历构建javascript解决方案和运行性能测试的麻烦

MySql查询将非常快,但请记住,一般来说,服务器请求要比在客户端执行所有操作慢得多。我首先将所有注释存储在JavaScript数组中(如您所建议的),然后轮询该数组。这将在客户端上保留所有处理。如果您的服务器由于任何原因当天运行缓慢,那么它将特别有用


编辑:对于尼克的有效评论,我想答案取决于评论的数量。如果有负载(数千?),并且您希望每隔几分钟发布一次新的评论,那么最好继续轮询服务器。

我原以为这更多地取决于站点获得的点击次数-页面点击次数越多,您将运行的这些计数就越多

当然,如果它们被正确地索引了,那么您只需要点击索引,但是构建一些东西来查询数据库一次,并准备一个javascript数组,该数组在视频中每秒钟包含一个数组元素(例如),然后,如果你在网站上获得了大量的点击率,用相关评论的数量填充每个的数组值会更有效


我只需要从评论中选择id+时间戳,然后在用户操作中加载评论本身(单击,悬停),或者在电影进行时加载评论。这比每秒钟/两秒钟查询一次数据库要好,因为HTTP请求通常比内存计算慢。我认为这也比一次加载所有注释要好,因为加载注释数据可能会减慢初始请求的速度,而且在大多数情况下,您甚至不需要这些注释。缺点是用户永远看不到初始加载后添加的注释,但我认为这是一个相当小的问题。

这确实带来了缺点,即当用户加载页面时,数组会过时。此外,根据评论的数量,当用户只观看前10秒的视频时,一次缓存所有评论可能是一种浪费。(更不用说它可能会减慢视频缓冲。)也许一个更具可伸缩性的解决方案是,将每秒的评论数加载到JavaScript数组中(比如70s块),然后从中加载,并在用户每次手动向后或向前移动视频中的位置时从服务器刷新此列表,或者,根据视频的当前位置(t-5s和t+65s),自上次刷新列表到现在已经60秒了。