首先,我们都知道 Postgres 在 update 一行时,哪怕只更新一个字段, Postgres 都会物理上新增一整个行,废弃旧行。
问题是, MySQL 的 innoDB 引擎下,同样只更新一行里的一个字段,我看到有的资料说,如果更新字段没超出原大小,就只更新该字段。 而另一个说法是,无论更新字段多大,都会像 Postgres 一样新增一整个新行,废弃旧行,区别只是对索引的更新没那么复杂。我想知道到底哪个正确?官方文档也没搜到详细解释。
我说的有点乱,说简单点,举个例子:
update articles set read=read+1 where id=5
MySQL 执行这个语句执行时,会在系统内部(对用户透明)生成一个新行么?
问题是, MySQL 的 innoDB 引擎下,同样只更新一行里的一个字段,我看到有的资料说,如果更新字段没超出原大小,就只更新该字段。 而另一个说法是,无论更新字段多大,都会像 Postgres 一样新增一整个新行,废弃旧行,区别只是对索引的更新没那么复杂。我想知道到底哪个正确?官方文档也没搜到详细解释。
我说的有点乱,说简单点,举个例子:
update articles set read=read+1 where id=5
MySQL 执行这个语句执行时,会在系统内部(对用户透明)生成一个新行么?