总会遇见这样的问题,一些信息需要得到点击次数,因此出现了,update与insert选择的模棱两可。如果update,需要查询一遍,然后再更新,最后要统计次数时可以直接查询。如果insert,只要有点击,就insert,最后统计时来个conut
请高手和管理员帮忙分析下~~~~~

解决方案 »

  1.   

    用UPDATE,点击次数存在于一个字段里,直接查询就可以了,用INSERT再做COUNT性能会差点
      

  2.   

    几条数据我想你也不会有疑惑,数据量大的时候,还是用insert吧,比update的效率高的多了记得看过哪本书说,数据的更新,在后台的处理也是删除原记录,再插入新记录的。不过这样数据库不好维护,不行就写过程,用动态SQL。我的回答抛砖引玉,我也关注一下
      

  3.   


    不是吧,你在哪本书上看到UPDATE是要删除数据的。
    你的问题,我理解成在生产环境下希望获取一条记录的更新次数,或者说的操作次数。数据量大不大不重要,重要的是看数据的并发操作量。
    如果你说的并发是对同一条记录,那你还是用INSERT,因为你的UPDATE会锁住你UPDATE的where条件所选定的记录,对于相同的其他操作它是不会处理的。
    如果你说的并发是对同一张表不同记录的并发,那你就可以使用UPDATE,毕竟这个也是最节省磁盘空间。如果你平时只对一条记录的操作次数字段进行操作,还有一个办法可以:
    select * from t where id='123' for update wait 2
    update t set times = times+1;就是说,每次执行时,如果记录被锁,则等待两秒钟,如果2秒钟后还没解锁,则报错。
    愚见,希望有帮助。
      

  4.   


    没有太明白你的意思。如果是要统计点击次数可以直接
    update XXX set count = count +1 where id = XXX;insert和update,在应用里应该是可以判断出来的。所以也不存在你说的问题叻。至于并发的顾虑
    可以参考一下这个帖子
    http://www.inthirties.com/thread-88-1-1.html
      

  5.   


    我个人见解,大家听听。这样的统计要看设计:
    如果表的设计是在一个表里面:
    举例:帖子ID,帖子内容,发表时间,发帖人,点击次数,如果用update会好点,直接指定update XXX set count = count +1 where id = XXX;但是如果这个设计也有两个表的
    表一: 帖子ID,帖子内容,发表时间,发帖人
    表二:帖子ID,点击时间,点击次数
    如果用update,就是update表二,那就需要先查询一下,如果有就update,如果没有就update是错的。那么体来说就是需要先查询(select)再update,如果没有还需insert~~~~
    这样是不是不如直接点,一旦点击就insert,最后统计的时候count一下这个问题觉得又延伸到设计问题了,大家来了,都看看吧~~~
      

  6.   

    还是那个问题,我的意思是做点击率是insert日志,然后count好,还是直接update一个统计字段号~~~
      

  7.   


    选update吧,又一个点击次数字段submit_count number,当点击一次的时候,submit_count值就+1。
      

  8.   


    这里程序上,可以这样实现
    你新建一条帖子的时候,应该就在点击率的表里insert一条记录了。点击的时候,关于点击量就只需要update这个表就可以了。如果帖子删除,就直接删除这两个表里的记录就可以了。update的时候,如果是在删除的时候,同时有另一个请求在update这个记录,按上面的update方式,也不会报错,只不过update影响的结果为0而以,也不会死锁,删除帖子以后,一个入口就不存在了,所以后面也就不需要担心update的问题叻。