Columnar pruning: read little, skip much Columnar pruning: read little, skip much query: sales per category by weekday, last year (teaching data) Fact file: one column per lane, blocks below day READ pid READ qty SKIP amount READ SKIP 2025 blocks 2024 skipped 2024 skipped 2025 blocks skipped partition prune by year, then column prune: 3 of 5 lanes read Bitmap filter: cat B + wd 2 cat B: 1011 rows wd 2: 0101 rows AND = 0001 rows low cardinality: bitmap wins Skew and history decide correctness (teaching rules) skew: one hot product id crowds a sort block, range prune degrades high-cardinality ids: dictionary + run-length, not raw bitmaps category moved in June: report uses the category at sale time slowly changing dimension keeps both old and new labels