SELECT * is ~1.68× slower than SELECT id, score
When you return 2,000 rows, selecting only two columns is 1.7× faster — the cost is carrying the 40-character `payload`.
Result
| Run | SELECT * | SELECT id, score | Ratio |
|---|---|---|---|
| Run 1 | 4.295 | 2.555 | 1.68× |
| Run 2 | 3.722 | 2.224 | 1.67× |
| Run 3 | 3.694 | 2.024 | 1.82× |
Spread over 3 runs: SELECT * CV 7.4% / SELECT id, score CV 9.8% / Ratio CV 4.1%
The statement
SELECT * FROM items LIMIT 2000; SELECT id, score FROM items LIMIT 2000; Conditions
100,000 rows; both queries are pinned with `LIMIT 2000`.
Where this number does not apply
On narrow tables, or when you fetch a few dozen rows, the gap nearly vanishes.
Reproduce
cd bench && python sqbench.py --samples 9 --out ../data/run.json