假设我有这张桌子:
Table "public.orders"
Column | Type | Collation | Nullable | Default
-----------------+---------------+-----------+----------+---------
o_orderkey | integer | | not null |
o_custkey | integer | | |
o_orderstatus | character(1) | | |
o_totalprice | numeric(12,2) | | |
o_orderdate | date | | |
o_orderpriority | character(15) | | |
o_clerk | character(15) | | |
o_shippriority | integer | | |
o_comment | character(79) | | |
如果我有涉及o_orderstatus
、或列的查询,我可以将数据类型更改o_orderpriority
为以改进它们吗?o_clerk
o_comment
char(n)
text
是的。而且可能很多。
使用(alias )永远不会获得性能。您根本没有任何收获,因为该类型已过时,大多无用且不受欢迎。有关的:
character(n)
char(n)
但是您在手册的引文中看到了这一点:
char(n)
是空白填充类型。像这样的列名comment
主要表示空白填充的废物。text
或varchar
消除臃肿,你桌子周围的一切都会变得更快,就像你的平均水平一样。行大小可能缩小到不到一半。每个数据页更多的元组意味着每个查询要读取和处理的页面更少,这是影响性能的最重要因素。在此期间,对列进行有利的排序以使其更高效,但是:
为什么?
我保留了长度限制
varchar(n)
,但如果这些只是任意的,请text
改用。稍微快一点,但是。(并且减少了极端情况的麻烦。)请参阅: