To restore a large database through php admin fails most of the time due to the limitation in php settings,well i consider 20 MB+ database is a large database.
First try to zip the .sql backup file and then try to restore it, phpMyadmin will auto detect extension and unzip it before restoring it. This option do often fails for me depending on database size and server hardware and memory Besides, there is also maximum execution time which may cause connection time out.
In such case only option left is to use ssh command. restoring a MySQL db through ssh is quite simple and restores are very fast.
mysql databse_name < backup_file.sql