Förutsatt att du pratar om faktisk, strikt JSON (utan konstigheter som nycklar utan citat)...
json
skiljer sig inte så mycket från text
. Det gör inte mycket förutom att validera JSON .
jsonb
är en annan best jämfört med dessa två:det är en fullfjädrad datastruktur med sitt eget interna format som har mycket fler funktioner tillgängliga i sökningar. Till exempel json
har ingen tillämplig =
(jämställdhetsoperatör). jsonb
har. (text
har också, även om det är semantiskt annorlunda.)
Det är mycket mer förnuftigt att indexera, men det måste omvandlas fram och tillbaka under läsning och skrivning.
Med tanke på det, jsonb
ser inte ut som ett bra val här.
... Så det finns bara ett beslut kvar att fatta:
Vill du säkerställa att din databas endast innehåller giltiga JSON-värden i din kolumn? På databasnivå? Eller litar du på att varje klient i den databasen (vanligtvis serverappar) endast tillhandahåller giltig data?
json
är ett relativt säkert val oavsett. Använder text
teoretiskt sett kan det förbättra prestandan med en försumbar marginal på grund av frånvaro av validering, men du får bara specifika siffror genom benchmarking. Men det skulle inte ha det skyddet mot icke-JSON-värden, och en oavsiktlig bugg i klienten kan gå obemärkt förbi. Testa ansvarsfullt!