What is the best way to migrate and optimize 300 GB database to drupal?
The answer is Yes.
First - because you are asking on Drupal Answers site.
I would recommend you using configuration like this:


0 Load balancer managing several servers
1 Varnish (proxy cache)
2 Nginx (php-fpm)
3 Drupal
4 MySQL (Master+Slave)


Also memcache can be used. The main problem will be when you will try to update/insert new record in DB. All read queries will be managed by caching-proxying systems.
If you need text search - use ApacheSolr.
Try to not views or panels, with such DB size you can have perfomance issues.