Guarda che se fai una fwrite il puntatore di posizione all'interno del file si sposta dopo il numero:

codice:
NUMERO
      ^
La fread() parte dalla posizione indicata con ^, quindi non legge nulla.

Fai un fseek() all'inizio del file e poi fai la tua fread().

In ogni caso, non credere che una select sia particolarmente costosa; se c'e' l'indice per la colonna in questione, sono 2 accessi in lettura al filesystem: 1 per l'indice e 1 per il dato, e' comunque risibile.

In ogni caso, qualunque problema reale tu stia cercando di risolvere, sono sicuro - non te ne avere - che questa sia una soluzione del cavolo. Prova a postare il problema reale e vediamo di trovare una soluzione un minimo piu' elegante, questa e' orripilante (senza offesa :])