1) user could have forgotten a whole column
2) bunch of nulls could've been inserted in "chunks" e.g., 20% of nulls are at the first 20% rows, then, 40% at the end, etc.
3) I could use random sampling to estimate this efficently. Cases from 2) could be false positives if read in order.