КЛАДР

А какая разница, сколько запросов? Это проблема производительности БД, а не информации в ней. Что там, непрерывно будет селектиться каждый дом? Есть такой тип БД (data warehous), где как раз и производится полное разворачивание всех ссылок для быстрого поиска, но данные в таких БД практически не должны обновляться и занимают в разы больше места, чем в обычной OLTP БД, где данные приведены к нормальной форме.

Задача поиска к чему сводится? По названию города, улице и номеру дома найти дом. Сначала ищем города, потом внутри полигона или окрестности точки (города) ищем точки или полигоны с тегом билдинг и отбираем там по тегам улица и номер. Математический аппарат для поиска точек в полигоне и пересечения полигонов достаточно развит, и есть интерфейсы к БД, где этот поиск делается одним запросом.

Или тупо ищем все дома с нужным номером и улицей, потом среди них находим ближайшие к нужному городу. Тут запросов больше, но требования к БД меньше, справится и компьютер, и любая железка.

В общем, проблема поиска надуманная, и не стоит ради неё городить огород из тегов.