Postgresql

在 Postgres (Aurora) 中使用 string 與 bigint 作為主鍵時是否存在顯著的性能差異?

  • September 22, 2020

我們可以對兩種類型(string/bigint)使用相同的邏輯來生成連續的 id(例如https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c)。這樣,兩者都是自然可排序的。

所以,假設我們有一個值 30722102503933550。

如果我們將其保留為 bigint (30722102503933550::bigint) 與使用字元串 (“30722102503933550”::text) 作為主鍵,那麼真正的性能差異是什麼。

只有知道確切的 SQL 語句,才能評估性能問題。一般沒有辦法回答。

也就是說,你應該和bigint. Abigint需要 8 個字節的儲存空間,而text帶有您問題中的值的 a 需要 18 個字節(1 個字節壓縮的 TOAST 標頭)。如果您想要列上的索引,這將變得特別重要。

此外,比較數字比比較字元串要快。

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