cto问我,mysql的replace基本原理是什么,如果已经有记录用replace跟用update比较起来,效率如何?我回答道: 1,在没有记录的情况下,replace的效率跟单个的insert一样。2,在有记录的情况下,replace相当于delete与insert的组合,比update的效率要高,因为replace是直接删除然后从尾部插入,减少中间检索位置的过程。不知道我回答的是否正确?
cto问我,mysql的replace基本原理是什么,如果已经有记录用replace跟用update比较起来,效率如何?我回答道: 1,在没有记录的情况下,replace的效率跟单个的insert一样。2,在有记录的情况下,replace相当于delete与insert的组合,比update的效率要高,因为replace是直接删除然后从尾部插入,减少中间检索位置的过程。不知道我回答的是否正确?
效率上,应该经过实测才能下结论。
如果是InnoDB引擎,恐怕replace效率更低一些,它要引入更多的日志。
一家之言,仅供参考。
主键冲突或者唯一索引重复的话replace才有意义,所以replace比update多一步检查重复键的过程
个人认为没有UPDATE效率高,
如有重复,删除->维护索引->插入->维护索引
UPDATE,找到直接替换,如果有索引字段,再维护索引,如果没有,就不维护索引
好像没看出来你的依据。首先, REPLACE会INSERT,在INSERT中索引扫描发现主键或唯一键冲突,然后进行删除,删除后再INSERT
面直接UPDATE,则先索引扫描查找记录,然后直接更新。
大家有研究过,的share下经验啊!
1 只要知道这两个命令应用的场景即可,没空去研究细节,也不需要知道这个所以然,技术的广度和深度都是无止境的,开车的主要着眼于开车即可,会一点修车,根本无需会造车。
2 这些基础语句性能不可能差很多,即使有区别,dba谁会为了哪一毫的性能而把update改成replace 或反之?----不如从别的地方找性能。
3 小公司的cto都倾向于把人问倒,或者问题听起来很简单,但是很偏,那说明他不喜欢你,鄙视他~~
4 这个问题比较难,要想答上来,需要对这两个命令的细节比较了解,还应该做相关测试,来说明问题。研究这个的人最起码也应该是mysql讲师。假如招聘mysql开发人员,考官问这个问题,就很正常。