This 2D counterpart builds the same table on a plain canvas grid — rows across, columns down — and drives every readout straight from the geometry you set: row count, column count, bytes per column, and which columns the query's SELECT list checks. Because the layout has no WHERE clause, the row-oriented store is forced to read every column of every row no matter what's selected (rows are laid out contiguously on disk), while the column-oriented store only ever opens the bytes belonging to the checked columns (each column is its own contiguous run). The block grid highlights exactly the bytes each layout actually reads and dims the rest, and a live bar chart plus a computed savings ratio (table columns ÷ selected columns) show, numerically, that narrowing the SELECT list widens columnar's advantage while selecting nearly all columns collapses it toward parity.