Джоином лучше пользоваться в случае, если данных в одной из таблиц не существует, но вывод обязан быть.
Select * from cities s
Left join countries c on s.id_country=c.id_country
Left join regions r on r.id_region=c.id_region
Where city_name_ru like '$city'
Если не будут совпадающие записи в countries и regions вернет вместо них null значения.
Запрос типа
Select × from cities s, countries c, regions r
Where s.id_country=c.id_country and r.id_region=id_region
And c.city_name-ru like '$city'
Выполняется намного быстрее первого, но при условии что во вснх таблицах должны быть совпадения.
Если кто то будет выкабениваться на счет звездочек, то скажи что со звездочкой запрос выполняется быстрее. СУБД перед фетчингом записей сначала читает абсолютноивсе значения полей, а уже непосредственно перед передачей начинает откидывать не требуемые поля. На это тратится время. Если бы в тпблицах было бы по 200 столбцов, то это бы было целесообразно указывать.