互动演示 · 为什么用 Parquet(一 / 二)

读的时候能跳着读

结论先说:CSV 按"行"摆放,Parquet 按"列"摆放。只要某一列时,Parquet 能直接跳到那一段、 跳过其余部分不读;CSV 逐行交织在一起,必须整份从头扫到尾——这是读取速度差距的来源之一。

就像整理衣柜:CSV 是每天一套衣服(上衣+裤子+袜子)叠一起放一格,要找"所有袜子"得把每天那格都翻开; Parquet 是所有上衣放一格、所有裤子放一格、所有袜子放一格——要袜子直接打开那一格,其他格子看都不用看。 下面拖滑块调行数、切换查询目标,看两种摆放方式各要经过多少个格子。
symbol
eob
close
提示:同一列数值相近、还经常重复(比如 symbol 列可能整列都一样),紧挨存放也更容易压缩——不止是"读得快"。 另外每一段还记下取值范围(最大/最小值),能跳过不可能命中的整段行——下一页讲 DuckDB 会用上这一点。