Se il tuo obiettivo è contare effettivamente le righe, utilizza COUNT(*) . num_rows è normalmente (nella mia esperienza) utilizzato solo per confermare che sono state restituite più di zero righe e continuare in quel caso. Probabilmente MySQL impiegherà più tempo per leggere molte righe selezionate rispetto all'aggregazione su COUNT anche se la query stessa richiede la stessa quantità di tempo.