当前位置: 首页 > 面试题库 >

PostgreSQL:额外列的性能影响

萧建木
2023-03-14
问题内容

给定一个大表(10至1亿行),向其中添加一些额外的(未索引)列的最佳方法是什么?

  1. 只需添加列即可。
  2. 为每个额外的列创建一个单独的表,并在需要访问额外值时使用联接。

答案会根据额外的列是密集的(通常不是null)还是稀疏的(通常是null)而改变吗?


问题答案:

在大多数情况下,NULL可以将具有值的列添加到行中,而无需更改数据页的其余部分。
NULL位图中 仅需设置一位。因此,是的,在大多数情况下,添加稀疏列要便宜得多。

为额外的列 创建一个 单独的1:1表
是否是一个好主意,在很大程度上取决于用例。它通常更昂贵。对于初学者,每行有28个字节的开销(堆元组标头加项目标识符),每个表有一些额外开销。与JOIN单行读取相比,查询中的行也要昂贵得多。并且您需要添加一个主/外键列以及一个索引。如果您在大多数查询中不需要其他列,则拆分可能是一个好主意。通常这是一个坏主意。

在PostgreSQL中添加列很快速。 更新
列中的值可能会很昂贵,因为每个人都会UPDATE写入新行(由于MVCC模型)。因此,最好一次更新多个列。

手册中的数据库页面布局。



 类似资料:
  • 9.3 vim 的额外功能 其实,目前大部分的 distributions 都以 vim 取代 vi 的功能了!如果你使用 vi 后,却看到画面的右下角有显示目前光标所在的行列号码,那么你的 vi 已经被 vim 所取代啰~为什么要用 vim 呢?因为 vim 具有颜色显示的功能,并且还支持许多的程序语法 (syntax), 因此,当你使用 vim 编辑程序时 (不论是 C 语言,还是 shell

  • 3.15 ApplicationContext的额外功能 {#toc_17} 正如本章开头所讨论的那样,org.springframework.beans.factory包提供基本的功能来管理和操作bean,包括以编程的方式。The org.springframework.context包增加了ApplicationContext接口,它继承了BeanFactory接口,除了以面向应用框架的风格扩

  • 这是网站中的一个常见功能,用户可以自定义其报告(他们可以选择数据库表中要在其报告中显示的列名,如https://i.stack.imgur.com/GxOGz.jpg). 我知道如何在SQL server中使用Select语句来查找列的系统属性(如column\u name、data\u type、length等),但是,如何为数据库列添加额外的自定义属性(如is\u visible、owner、

  • 问题内容: 有没有一种方法可以解组具有动态属性的XML标签(我不知道每次都会获得哪些属性)。 也许尚不支持。请参阅问题3633:encoding / xml:支持收集所有属性 就像是 : 问题答案: 您需要实现自己的XMLUnmarshaler 输出 http://play.golang.org/p/9ZrpIT32o_

  • 问题内容: 我有这个JavaWeb应用程序,它可以从电子表格上传成千上万的数据,该电子表格是从上到下按行读取的。我用来在服务器端显示应用程序当前正在读取的行。 -我知道要创建一个日志文件。实际上,我正在创建一个日志文件,同时在服务器提示符下显示日志。 还有其他方法可以在提示上打印当前数据? 问题答案: 它可能会影响您的应用程序性能。大小会因您所运行的硬件类型和主机上的负载而异。 可以将其转化为性能

  • 问题内容: 我们已经开始将spring aop用于我们应用程序的各个方面(当前的安全性和缓存)。 我的经理虽然十分了解这种技术的好处,但仍担心该技术对性能的影响。 我的问题是,你是否遇到了使用aop(特别是spring aop)引入的性能问题? 问题答案: 只要你能够控制自己的AOP,我就认为它是有效的。无论如何,我们确实确实存在性能问题,所以通过我们自己的推理,我们无法完全控制;)这主要是因为重