7 tane left join gördüm alt alta. fazlası da var mı bilmem ancak sorgunun kasması normal.

mantığı değiştirmeniz gerek öncelikle. Misal cities için farklı bir fonksiyon yapabilirsiniz. static değişkende tutarsanız bir nevi cache gibi çalışacaktır.
static $sehirler;
if(isset($sehirler[$gelen]])) return $sehirler[$gelen];
else {
// select işlemleri
}
gibi. böylece sayfadaki tüm sorgularda ortak cities çalışacağından bir left joinden kurtulmuş olursun. Benzer şekillerde bu birleştirmeleri azaltmak ilk amacın olmalı.