Google decides what to show 1st based on how its algorithm matches the words that user is currently searching. So if pages
www.example.com/index.php?a=1&b=2 show different contents (i.e. the 2nd one shows a 'product X') it might be that Google decided the 2nd one best fit a certain search (i.e. user searched exactly for the words 'product X'), thus it shows the 2nd page prior the home page
www.example.com of your site. And there is nothing you could do about this.
But by reading the pages' names, I'm afraid the problem you are facing is that both pages
www.example.com/index.php show the same contents. In such a case then you have simply screwed up your site/server settings, and Google gets confused.
You need to create a
301 redirect on your server to redirect page
www.example.com and you should be fine (give to Goole the time to reprocess the all thing).
Later on in your site you could also totally replace any link towards