Regarding how to get the optimizer to do what you want when it seems like the engine has got the row counts wrong,
http://sqlbits.com/Sessions/Event14/Query_Tuning_Mastery_Clash_of_the_Row_Goals
There are more convensional methods but the tips in the above are when the conventional methods dont work and you have to nudge the optimizer gently.