PostgreSQL - Json & Jsonb

Posted on 2018-12-20

下面會比較 PostgreSQL 裡面 Json 和 Jsonb 的不同

  • Jsonb 的 b 是 binary 的意思,也就是說會以 binary 的型式存到 DB 裡面,而 Json 就是以一般文字的型式存在 DB

比較差異

  • 執行下面沒有 format 過 JSON
select '{ "name" : "cash" }'::Json
select '{ "name" : "cash" }'::Jsonb
  • 得到下面的結果,Jsonb 會 format Json 的格式,Json 不會

  • 執行下面重復 Key 的 Json
select '{ "name" : "cash", "name" : "gg" }'::Json
select '{ "name" : "cash", "name" : "gg" }'::Jsonb
  • 得到下面的結果,Jsonb 會移除掉重復 Key 的 Json,會只保留最後一個

結論

  • 存到 DB 的時候,Jsonb 因為需要轉換格式,所以會比 Json 來的慢
  • 在 DB 端處理 Json 的話,Jsonb 因為是在 binary 處理,所以 Jsonb 的效能會比 Json 來的好