CSV stores data row by row — perfect for appending a record, terrible for "average of one column across a billion rows", because you read everything to touch anything.
Columnar formats like Parquet store each column together:
- Read only the columns the query needs.
- Compress brilliantly (similar values sit side by side).
- Ship min/max statistics per chunk, so engines skip data without reading it.
That's the whole trick — and it's why the same query over the same data can be orders of magnitude faster.