postgresql - RDBMS:将通常不一起查询的列放在一起是否会影响性能?
问题描述
示例:我们有列id
, A1
, A2
, A3
, B1
, B2
, B3
。A
列通常与列一样一起查询,B
但A
通常不会与一起查询B
。
(1) 将所有列存储在一个表中,与 (2) 将一个表拆分为A
列,将一个表拆分为B
列(这需要复制id
列),是否会影响性能?
我正在使用 Postgres。
解决方案
1) 是的:一个表中的所有列都使得读取每一行的成本更高,因为每页的行数更少,因此需要读取更多的页面 - 更多的 I/O。
2)是的:当您确实需要 As 和 B 时,两个单独的表会比较慢,因为您需要将它们连接在一起。这通常具有更多的 I/O。
一般来说,你会用一个换另一个。如果你总是要消耗或使用一个小的、索引良好的集合,那可能没关系。如果您要遍历大量行,无论是因为没有有用的索引还是因为大量输出,那么您最好根据您的特定场景来衡量它,而不是猜测甚至应用经验法则。
推荐阅读
- reactjs - React native - 如何用文本包装视图?
- spring - 多个 Spring Cloud 网关。这可以配置为集群吗?
- python - 如何在 python shell 中创建加载
- javascript - 如何使用箭头键或 WASD 使对象(图像)在画布上平滑移动?
- three.js - Three.js OBJLoader 解析方法不起作用
- salesforce - 电子邮件操作中的错误“html 正文数据值太大”
- java - Android.ConnectionService 来电 UI 未显示 onShowIncomingCallUi
- java - Java中自定义有序列表的基于属性的测试
- prestashop - PrestaShop 添加到购物车按钮在单个产品页面上不起作用
- javascript - 如何在 expo-av Video 上使用 playFromPositionAsync?反应原生