2D FFT how is it done?
Yes, you are right. It is a lot of FFTs, but remember it is a lot of samples as well.
If you have a FFT algorithm with complexity $O(n \cdot log(n))$, then for the 2D scenario you will have an algorithm with complexity $O(M \cdot (N \cdot log(N)) + N\cdot (M \cdot log(M)))$
but if you express this in terms of $M \cdot N$, what you get is.
$O(M \cdot N \cdot (log(N) + log(M)))$ and finally with the log sum identity you get $O(M \cdot N \cdot log( M \cdot N ))$
The complexity in terms of number of samples is the same