update是什么原理呢?
执行一个update
和执行delete,再insert into,
哪个效率高?
为什么?
好象从update触发器看,内部处理也是先delete,在insert into
是这样的吗?
------解决方案--------------------不完全是这样
作个很简单测试,一个主外键关联的表,你更新主表数据的话,差距就出来了
------解决方案--------------------楼上说的没错,如果主键被别的表作为外键使用,是删除不了的。
不过也有可能是服务器内部作了特殊除了,其实还是delete + insert,只不过insert之后才判断外键约束。
------解决方案--------------------从触发器的角度来看,update过程的确是:先delete,再insert。
从单纯的更新角度来看,update过程却是直接覆盖存储单元中原先的value。
二者不能混淆。
------解决方案--------------------底层处理据说确实是先delete,再insert,但是使用起来,当然update快些.
------解决方案--------------------记入日志和写数据是两个独立的过程,如果你用磁盘阵列,这两个过程能明显区分开。
记入日志时记录的是一条整个的记录,而写入数据文件则只修改需要更新的字段。这些在本科数据库原理课程中有的,可能上学时没注意。