我有一张有50个字段的桌子:
我粗略地说,需要比(2)中的字段更频繁地访问(1)中的字段。
我应该把它们分割成一对一关系的两张桌子,还是把它们都放在同一张桌子上?
发布于 2015-07-27 17:44:00
您所描述的过程有时被称为“垂直分区”。到了一个极端(每个垂直分区一列),这就是列数据库存储数据的方式。不幸的是(据我所知),Postgres目前没有对垂直分区的直接支持。
将数据分割成两个表的想法是很好的。我要指出以下几点:
join包装到视图中,以便在需要额外列时使用该视图。)join应该非常快。INSTEAD OF触发器来处理这个问题。在某些情况下,这可能是一个巨大的表现胜利。但是还有额外的手工工作来保持表的同步。
发布于 2015-07-27 18:20:19
这里确实没有足够的信息来估计(更不用说量化)好处是什么,但是成本是非常清楚的--更复杂的代码、更复杂的模式、可能更大的总体空间使用以及添加和删除行时的性能开销。
性能改进可能来自在执行全表扫描时扫描较小数量的数据,或在需要时增加在内存中查找数据块的可能性,以及总体较小的内存占用,但如果没有关于通常执行的操作类型的具体信息,以及服务器是否处于内存压力之下,则无法提供可靠的建议。
要非常小心,使您的系统更复杂,作为一个不确定的性能收益的副作用。
https://stackoverflow.com/questions/31659127
复制相似问题