برای این کار برنامه ای وجود نداره که مثلا شما یه query درب و داغون بهش بدید و اون یه query سریع بهینه شده به شما تحویل بده. شما باید حتی الامکان خودتون بتونید خوب query بزنید، بعضی اوقات هم می تونه خیلی پیچیده باشه. یه سری موارد ساده رو تو این لینک می تونید ببینید.
در هر حال خود مثلا SQL server و یا Oracle هم وقتی یه query بهشون بدی، با توجه به الگوریتم هایی که دارن plan های مختلفی رو برای اجراش در نظر می گیرن و بهترینش رو انجام می دن، یه DBMS باهوش مثلا اگر طبق مثال شما به جای join از where استفاده کردید، این رو تشخیص می ده و همون plan ای رو اجرا می کنه که انگار از اول شما با join نوشتی، تفاوت یه DBMS با دیگری هم تو همین جا ها مشخص می شه.
اگر دوست دارید کلیات این الگوریتم ها رو بدونید می تونید به کتاب سیلبرشاتس مراجعه کنید.