解决方案 »

  1.   

    如果你只有几十条数据自己玩儿玩儿,这可以作为一个练习,就按照你自己的描述去实现,20~50行代码的东西不要怕麻烦,自己去实现,然后提出更为具体的问题。对于实际的产品,有开发经验的人都知道这是应了那句“no zuo no die”的话了。5 秒钟轮询,而且要把所有数据都读出来,再进行全量的“比较”(哇塞),那么数据库应用普通的执行效率不全“死”掉、也毁了90%以上了。所以这种程序设计不能出现在一般的产品中。
      

  2.   


    你要知道一个关系数据库最基本的知识,当你 select 查询数据库表所有数据以后,没有一个正规、商品化的关系数据库告诉你说“返回记录的顺序是按照插入顺序排列”的。关系数据库都是按照内部顺序排列返回记录,例如跟磁盘块分配和空闲重用的变化有关,跟记录的聚簇索引结构或者别的索引结构有关,跟删除和修改数据的操作有关,跟索引树的不定期分裂节点行为有关,跟数据库内部的中间表查询算法次序有关,等等。返回数据的次序是随机的。虽然你在少量数据时去测试,似乎总是按照固定顺序返回记录,但是这是非常不靠谱的。你不能假设“A列对应B列”。
      

  3.   

    no zuo no die 。 。慎重使用长轮询啊,还是全量长轮询,做测试玩玩吧,上项目还是再考虑考虑吧
      

  4.   

    数据库表再增加一列 -updatetime。 如果是新的记录,那么就是添加的时间,如果是修改的记录,就是修改时间。然后每隔5秒,查询updatetime在这个时间段里的数据,这样就不用把所有的数据都查一遍了。
      

  5.   

    数据库不是有 trigger 的么。。
      

  6.   

    数据库增加一列timestamp类型的字段,这个类型会在当前行数据更新或新增的时候自动变化。这个变化都是递增的。第一次查询的时候拿到列表里最大的timestamp,以后查询只要带一个条件 timestamp > @timestamp(已经查出来的最大值)。这样查出来的就是增量更新。