Почему бы просто не использовать numeric(21, 0)
? Кажется, это точно описывает то, что вы ищете.
Я бы не сказал, что «varchar имеет низкую производительность». Что более точно, так это то, что более короткие ключи лучше, а ключи фиксированной длины лучше. Следовательно, строки не являются оптимальными ключами для индексов. Тем не менее, они по-прежнему очень разумны, когда это необходимо.