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

100列Application_user表中SELECT *与指定列查询的性能差异及原因

两个SQL查询的性能差异及深层原因

性能差异对比

  • select * from Application_user;的执行效率、资源占用远不如指定列的查询:
    • 数据传输量是后者的数倍(100列vs指定少量列)
    • 数据库服务器和客户端的内存占用更高
    • 整体执行耗时(磁盘IO+网络传输+数据处理)明显更长

核心原因

  • 磁盘IO开销:数据库读取数据时,select *要加载表中所有100列的磁盘数据,哪怕很多列根本用不上。如果表包含大字段(比如TEXT、BLOB),这种开销会呈指数级增长;而指定列的查询只需要读取目标列对应的磁盘块,甚至如果目标列刚好在某个索引里(覆盖索引),连表数据都不用读,直接从索引取数。
  • 网络传输开销:更多的数据意味着要在服务器和客户端之间传递更大的数据包,带宽有限时,这部分耗时会占比很高。
  • 内存与解析开销:服务器和客户端都要分配更多内存来存储这些额外数据,客户端解析结果集的时间也会随着数据量增大而增加。
  • 索引利用率限制:select *会破坏覆盖索引的优化可能——哪怕你查的列在索引里,只要用了*,数据库就必须回表读取全量行数据,而指定列的查询可以直接用覆盖索引完成查询,跳过回表步骤。

内容的提问来源于stack exchange,提问作者Syeda Maira Saad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:22:35