对于mysql来说,大多数时候都需要自增整数主键,因为插入操作会按顺序写入磁盘,这会非常有效
但是对于postgresql来说,更新tuple实际上是通过插入新的并为旧的标记删除来完成的,存储tuple的块经常会发生变化,所以对于pg来说,自增primary的优势可能不存在?也许我们应该使用一些具有实际意义的随机密钥,例如股票号,身份证号等
在 SQL(不仅是 Postgres,而且实际上是所有数据库)中,每条记录上的数据“独立”于表中记录的存储方式。换句话说,记录在磁盘上“物理”存储的方式对您来说是隐藏的。
如果您插入一条记录,并且自动增量列(或类型为 SERIAL
的列)的值设置为例如10,那么如果记录被物理移动,该值将不会改变。
Postgres 在使用自动增量列方面将表现出与任何其他 DBMS 相同的优势。