Тебе ничего не надо придумывать. Все уже придумано и база умеет индексировать.
create table autonumbers(autonumber varchar(30), region varchar(30));
create index idx1 on autonumbers(autonumber);
create index idx2 on autonumbers(region );
Запросы:
поиск номеров в регионе (индексированный)
select .... where region = 'Астана';
точный поиск номера по полному совпадению
select .... where autonumber= '111AAA11';
все что я знаю это поиск чисел быстрее поиска строк
Это слабое утверждение для баз данных. БД это на 80% IO bounded приложение
и его нагрузка будет зависеть от дисковой подсистемы и от удачного расположения
искомых строк в блоках БД.
Мой личный опыт эксплуатации БД Oracle например показывает что практически
нет разницы между varchar / number. Хотя многие DBMS (Postgresql) поддерживают
примитивные типы данных, но когда строка (datarow) длинная - то практически
безразлично будет ли у тебя integer, biginteger, decimal.
Важнее сделать систему просто правильной, а ужимать и утрамбовывать инфу в примитивы
это - более поздняя оптимизация. Попробуй загрузи свои номера в макет и поэкспериментируй.