По-моему, у varchar(n)
есть свои преимущества. Да, все они используют один и тот же базовый тип и все такое. Но следует отметить, что индексы в PostgreSQL имеют ограничение по размеру 2712 байт в строке.
TL; DR: Если вы используете text
type без ограничения и имеете индексы в этих столбцах, очень возможно, что вы нажмете этот предел для некоторых ваших столбцов и получить ошибку при попытке вставить данные, но с помощью varchar(n)
вы можете ее предотвратить.
Некоторые подробности: проблема в том, что PostgreSQL не дает никаких исключений при создании индексов для text
type или varchar(n)
, где n
больше 2712. Однако он будет давать ошибку, когда будет вставлена запись со сжатым размером более 2712. Это означает, что вы можете вставить 100 000 символов строки, которая состоит из повторяющихся символов, потому что она будет сжата намного ниже 2712, но вы не сможете вставить некоторую строку с 4000 символами, потому что сжатый размер больше 2712 байтов. Используя varchar(n)
, где n
не слишком слишком много больше 2712, вы можете избежать этих ошибок.
Необходимо будет переустановить инструменты командной строки:
$ xcode-select --install