Postgresql

列的數據類型會影響查詢的性能嗎?

  • May 11, 2022

假設我有這張桌子

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) 通常是三個中最慢的,因為它有額外的儲存成本。在大多數情況下,應改為使用文本或字元變化。

值得一讀

引用自:https://dba.stackexchange.com/questions/312006