Postgresql
列的數據類型會影響查詢的性能嗎?
假設我有這張桌子
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
我可以將 char(n) 數據類型更改為文本以改進它們嗎?
性能不會有任何提升。手冊明確提到
提示 這三種類型之間沒有性能差異,除了在使用空白填充類型時增加了儲存空間,以及在儲存到長度受限的列時需要一些額外的 CPU 週期來檢查長度。雖然 character(n) 在其他一些數據庫系統中具有性能優勢,但在 PostgreSQL 中沒有這樣的優勢;事實上 character(n) 通常是三個中最慢的,因為它有額外的儲存成本。在大多數情況下,應改為使用文本或字元變化。