Dan*_*ein 5 sql database postgresql performance
给定一个大表(1000万到1亿行),添加一些额外(未编入索引)的列的最佳方法是什么?
答案的变化取决于额外的列是密集的(大多数不是空的)还是稀疏的(大多数是空的)?
Erw*_*ter 17
在大多数情况下,NULL可以将具有值的列添加到行中,而不对数据页的其余部分进行任何更改.只需在NULL位掩码中设置一位.所以,是的,在大多数情况下,稀疏列的添加要便宜得多.
为附加列创建单独的1:1表是否是一个好主意取决于用例.它通常更贵.对于初学者来说,每行有28个字节(堆栈头加项目指针)的开销,每个表有一些额外的开销.JOIN查询中的行比单个读取它们要昂贵得多.您需要添加主/外键列以及索引.如果您在大多数查询中不需要其他列,则拆分可能是个好主意.大多数情况下这是一个坏主意.
在PostgreSQL中添加列很快.更新列中的值可能很昂贵,因为每个都UPDATE写入一个新行(由于MVCC模型).因此,最好一次更新多个列.
如何计算行大小:
| 归档时间: |
|
| 查看次数: |
3966 次 |
| 最近记录: |