а причем тут количество записей в astdb? оО
Я б нарезал таблиц в какой-нить sql-базе, где это бы все обработал. Берем базу Россвязи, вычленяем оттуда все необходимые маски номеров, пихаем в таблицу, делаем дополнительную колонку, где ставим нужный фактор региона, например MSK, рядом в другой таблице кладем все имеющиеся CID и через колонку уже в этой таблице делаем связь типа много-ко-многим, т.е. ту же MSK как в первой таблице. И в func_odbc пилим функцию-запрос вида select ... join, где в join связь через этот MSK. Предусматриваем дефолтовое поведение, когда связь отсутствует, т.е. с какого cid звонить, если звонить.