cto问我,mysql的replace基本原理是什么,如果已经有记录用replace跟用update比较起来,效率如何?我回答道: 1,在没有记录的情况下,replace的效率跟单个的insert一样。2,在有记录的情况下,replace相当于delete与insert的组合,比update的效率要高,因为replace是直接删除然后从尾部插入,减少中间检索位置的过程。不知道我回答的是否正确?

解决方案 »

  1.   

    replace删除时,难道不用检索位置?
    效率上,应该经过实测才能下结论。
    如果是InnoDB引擎,恐怕replace效率更低一些,它要引入更多的日志。
    一家之言,仅供参考。
      

  2.   

    这个没什么比较的吧  
    主键冲突或者唯一索引重复的话replace才有意义,所以replace比update多一步检查重复键的过程
      

  3.   

    相当于 有可能的删除操作+insert操作  和  update操作比较效率
      

  4.   

    2、
    个人认为没有UPDATE效率高,
    如有重复,删除->维护索引->插入->维护索引
    UPDATE,找到直接替换,如果有索引字段,再维护索引,如果没有,就不维护索引
      

  5.   

    REPLACE为实现特定的功能而开发的,如果比UPDATE强,那么MYSQL会给我们强烈推荐所有的INSERT都带REPLACE了。
      

  6.   

    理论上应该是这样,但没试过。
    好像没看出来你的依据。首先, REPLACE会INSERT,在INSERT中索引扫描发现主键或唯一键冲突,然后进行删除,删除后再INSERT
    面直接UPDATE,则先索引扫描查找记录,然后直接更新。
      

  7.   


    大家有研究过,的share下经验啊!
      

  8.   

    假如有人这样问我,我将如下回答:
    1 只要知道这两个命令应用的场景即可,没空去研究细节,也不需要知道这个所以然,技术的广度和深度都是无止境的,开车的主要着眼于开车即可,会一点修车,根本无需会造车。
    2 这些基础语句性能不可能差很多,即使有区别,dba谁会为了哪一毫的性能而把update改成replace 或反之?----不如从别的地方找性能。
    3 小公司的cto都倾向于把人问倒,或者问题听起来很简单,但是很偏,那说明他不喜欢你,鄙视他~~
    4 这个问题比较难,要想答上来,需要对这两个命令的细节比较了解,还应该做相关测试,来说明问题。研究这个的人最起码也应该是mysql讲师。假如招聘mysql开发人员,考官问这个问题,就很正常。