Mysql 以一种特殊的(大概是性能更高的)方式运行 when a table has no variable-width columns
postgres 有类似的行为吗?向表中添加单个可变宽度列会产生重大差异吗?
最佳答案
postgres docs (read the tip) 中给出的一般建议是可变长度字段通常性能更好,因为它会产生更少的数据,因此该表适合更少的磁盘 block 并在高速缓存中占用更少的空间。现代 CPU 比内存和磁盘快得多,可变长度字段的开销值得减少 IO。
请注意,postgresql 将 NULL 值存储在行开头的位图中,如果该值为 NULL,则忽略该字段。因此,任何可为空的列基本上都具有可变宽度。 postgresql 存储数据的方式 ( Database page layout ) 表明检索最后一列会比第一列慢。但是,如果您有很多列并且数据大部分都在缓存中,那么这可能只会产生明显的影响。否则磁盘io将是主导因素。
关于performance - Postgres 性能 : Static row length?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5437336/