È in qualche modo efficace, ma non è ottimale:non tutti i dati che ricevi in _GET e _POST andranno nel database. A volte potresti volerlo visualizzare sulla pagina, nel qual caso mysql_real_escape_string può solo far male (invece, vorresti htmlentities).
La mia regola pratica è di sfuggire a qualcosa solo immediatamente prima di inserirlo nel contesto in cui deve essere evaso.
In questo contesto, faresti meglio a usare solo query parametrizzate, quindi l'escape viene eseguito automaticamente.