You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

列数是否影响PostgreSQL带投影的读取查询性能?

PostgreSQL投影操作与磁盘I/O的关系

这个说法不正确,具体分析如下:

核心原理:磁盘I/O与数据提取逻辑

PostgreSQL的磁盘读取单位是数据页(默认8KB),而非单一行或单个列。执行查询时的流程为:

  1. 借助id索引快速定位符合id < 10条件的5行数据的物理位置(ctid);
  2. 根据ctid读取对应的数据页,而非单独读取某一行的所有列;
  3. 从读取的数据页中直接提取查询所需的id和name列,不会将该行的其他列(比如USERS_2的age)加载到内存中参与后续处理。

对原说法的纠正

  • 原说法中“需先从磁盘读取整行再做投影”不成立:磁盘读取的是数据页,投影操作(筛选目标列)是在从数据页提取数据的阶段完成的,并非先加载整行所有列再丢弃不需要的部分。
  • 投影操作的作用不止于减少客户端传输数据:它还能降低数据库内存占用量,避免不必要的列数据进入内存处理流程。
  • USERS_2列数更多不会增加磁盘I/O量:由于两表id、name内容一致,行的存储分布逻辑基本相同,读取符合条件的数据页数量一致,因此磁盘读取量与USERS_1无差异。

内容的提问来源于stack exchange,提问作者Zeeshan Shamsuddeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:45:29