Postgresql
在 Postgres (Aurora) 中使用 string 與 bigint 作為主鍵時是否存在顯著的性能差異?
我們可以對兩種類型(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 標頭)。如果您想要列上的索引,這將變得特別重要。此外,比較數字比比較字元串要快。