On 8/19/25 21:47, Ertan Küçükoglu wrote:
> Hello,
>
> I am using PostgreSQL 17.6.
> I would like to learn if there is any benefit of using domains over data
> types for table column definitions in terms of performance gain/loss.
>
> For example I might have table defined as below
> create table test (
> a integer,
> b integer,
> c integer,
> d varchar(5)
> );
>
> I might also have ame table defined as below
>
> create domain aint integer;
> create domain s5 varchar(5);
>
> create table test_domain (
> a aint,
> b aint,
> c aint,
> d s5
> );
>
> Does the second table have any technical advantage/disadvantage over
> plain data type definition?
> Less metadata in memory? High metadata in memory? Less/increased disk space?
See:
https://www.postgresql.org/docs/current/catalog-pg-type.html
for what is stored in system catalog for a domain vs a base type.
Personally I don't see that integer --> aint really helps.
Also I am pretty sure varchar(5) --> s5 is still going to result in a
length check.
>
> Thanks & Regards,
> Ertan
--
Adrian Klaver
adrian.klaver@aklaver.com