Цитата из руководства:
числовой: до 131072 цифр перед запятой;насколько я могу судить, до 16383 цифр после десятичной точки
http://www.postgresql.org/docs/current/static/datatype-numeric.html
131072 должны соответствовать вашим потребностям.
Редактировать:Чтобы ответить на вопрос об эффективности:
Первый и самый важный вопрос: какие данные хранятся в этом столбце и как вы их используете?
- Если это числозатем используйте числовой.
- Если это не число, используйте varchar.
Никогда, никогда не храните (реальные) числа в столбцах символов!
Если вам нужно отсортировать по этому столбцу, вы не будете удовлетворены тем, что выполучить, если вы используете тип символов (например, 2
будет отсортировано после 10
)
Возвращаясь к вопросу эффективности.Я предполагаю, что это в основном космическая эффективность.Вы можете самостоятельно рассчитать требования к пространству для ваших значений.
Требования к хранилищу для числового типа данных также задокументированы:
Фактическое требование к памяти составляет два байта длякаждая группа из четырех десятичных цифр плюс служебные данные от пяти до восьми байтов
Таким образом, для 20 цифр это будет максимум 10 байтов плюс служебные данные от пяти до восьми байтов.Так макс.18 байт.
Для хранения 20 цифр в столбце varchar необходимо 21 байт.
Таким образом, с точки зрения "эффективности", числовое значение немного лучше.Но это никогда не должно влиять на ваше решение, потому что выбор типов данных должен зависеть от требований содержимого столбца.
С точки зрения производительности, я тоже не думаю, что будет большая разница.