Motor Control with Grove MOSFET and high timer frequencies

I get an Grove MOSFET to Contol a fan by PWM (Arduino Uno). It works well with Standard Timer Setting of Arduino what is 490Hz.
However, the fan makes whistling noises when modulated at 490 Hz. Therefore I set the Ardiono-timer to 31300Hz. But then the fan can’t be controlled anymore, already at values of “analogWrite (motorPin, 50)” it turns up fully. Why does the Mosfet react this way at higher frequencies?

Because I think the frequency is too high. Why do we need such a high frequency?

31Khz is too high? The advertisement of seed says that the mosfet can process up to 5Mhz:

We need such high frequency because if the fan is controlled by PWM it acts like an loudspeaker. Therefore the PWM frequency must be above the audible spectrum.