Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uoajw-006QIK-Ji for pgsql-general@arkaria.postgresql.org; Wed, 20 Aug 2025 04:48:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uoaju-003hb1-7c for pgsql-general@arkaria.postgresql.org; Wed, 20 Aug 2025 04:47:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uoajt-003hZx-Px for pgsql-general@lists.postgresql.org; Wed, 20 Aug 2025 04:47:58 +0000 Received: from mail-ua1-x92e.google.com ([2607:f8b0:4864:20::92e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uoajs-000qSH-0b for pgsql-general@lists.postgresql.org; Wed, 20 Aug 2025 04:47:58 +0000 Received: by mail-ua1-x92e.google.com with SMTP id a1e0cc1a2514c-89018ea5625so1543980241.0 for ; Tue, 19 Aug 2025 21:47:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755665274; x=1756270074; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=BHZbBjDKF7ePM0YTX0jkryH4VBt2hbiuY/+6PqAGkV0=; b=Z6jVlhQ8UOx/hSzeAtod/eM6h3KnlVpNMmxN8RTVKtj8/Ff07tKpWw8Ku2uaQJjQYX Ol75g9bprDW6XaqA2ZbxePHxjn4gcUKQwcLvobgrxuwy2Qnq4OPq/PccBURNUT2+kiee 3F/SKOxiiKfCnoOU7XV10Vm52Z/ZkX8BNlZwQrBcn9Obw6VL6AwsQMa8TGOkqkQ74l8q SY/QbgUnuiEERBsRQLuaGGBEoOrTOrnAjmzbNUrcKz+P/IsnYBj85D/+hp/ojnBS3fvL 6qf5kP6Yb3p4/D/foitvROU1Sb3TOqfSb8qLProS7/VeJbKGcWJ/37SX21zweV199/cp a1dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755665274; x=1756270074; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=BHZbBjDKF7ePM0YTX0jkryH4VBt2hbiuY/+6PqAGkV0=; b=NmQTFHhrplh7LEV0beb493l0B0NCTf04+AJRsC1v+akWVcPpNlGB+8EMWGx6n4J9Uw VMkV25B5EOqSm+O5l9rXwsLY8HHLZ5M8su4O9AOUF+2MO70ry26ZNCsn9geYJaXe2S9o TJMrkKWFA5BuOaV3zhaFgoj5n4UlgIZK2k/W1Pz0HVuIeT/UNJcFkgX+AzOZiPhdGybF HlNvIL9ZAYBS6LRPdAR8e8YWT5EoV/GMmdqYzlcvTKWC5uG7lCc1LehYnV3jwLggTb9V CSTVzLfrO9yN3oua6wFhHhlDXzFd+c6ksvzpfiC5w01YYLYBLZHwKUPXX9D2Yd3mlGhd bSrg== X-Gm-Message-State: AOJu0YyUozCuZMgFFGxIY7mBCRvxpq8lpM6bsmMlBTEpyQ0CRH8RGd0i 5ObWAR3TuxIntGzEG1fbDaYx4KQKuUjFC4lOMlaW6Hc6hQnIIaTlqbNrHBEeAgJIwpZh3jRR1lm 3BNTlAI+cSEuDz4lypgdAZzGEdL7WrarJ4A== X-Gm-Gg: ASbGncvuahExbRTF7/ixVoJ2fX4tUoxFkDdHtfHlpPIxe7fnsHnrD/Pwbxxt601/WZ0 4s1wx8dXKd0R9sVQX7/2bPLTCg8K8l5iy7Y/nf+ob+bC7n3oV8X/diSPxPO4t+MIttCtWMKaT18 6zjr1lDEDCyUsDkZfYhq4mIsOePGItBI0D06NpDOqB9iVqEwGUEdwySZOOowU27TbHlpWZRj4/K J1NPg== X-Google-Smtp-Source: AGHT+IEZbOI3/zY2atr5HJxSXNVEEy8VzfVmRzQNn6Hi9HBVKM68CmyyST3I9qyYmi5HWu5tCYZZUeXmI1MovOEYNW8= X-Received: by 2002:a05:6102:3582:b0:51a:4906:f19b with SMTP id ada2fe7eead31-51a51ebb4bbmr455457137.35.1755665274064; Tue, 19 Aug 2025 21:47:54 -0700 (PDT) MIME-Version: 1.0 From: =?UTF-8?B?RXJ0YW4gS8O8w6fDvGtvZ2x1?= Date: Wed, 20 Aug 2025 07:47:43 +0300 X-Gm-Features: Ac12FXxkRJIinWzGtbBMMmivTT8MWDzYxM-tx4MhUA233ze4SgUoId2rn3orz0I Message-ID: Subject: Domains vs data types To: pgsql-general@lists.postgresql.org Content-Type: multipart/alternative; boundary="0000000000000158db063cc4adde" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000158db063cc4adde Content-Type: text/plain; charset="UTF-8" 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? Thanks & Regards, Ertan --0000000000000158db063cc4adde Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

I am using PostgreSQL 17.6.
I would like to learn if there is any benefit of using domains over d= ata types for table column definitions in=C2=A0terms of performance gain/lo= ss.

For example I might have table defined as belo= w
create table test (
<= font face=3D"monospace">=C2=A0 a integer,
=C2=A0 b integer,
=C2=A0= c integer,
=C2=A0 d varchar(5)
);

I might also have ame table defined as below

create domain aint integer;
create domain s5 varchar(5);

create table tes= t_domain (
=C2=A0 a aint,<= /div>
=C2=A0 b aint,
=C2=A0 c aint,
= =C2=A0 d s5
);
<= br>
Does the second table have any technical advantage/disadvanta= ge over plain data type definition?
Less metadata in memory? High= metadata in memory? Less/increased disk space?

Th= anks & Regards,
Ertan
--0000000000000158db063cc4adde--