実際の厳密なJSON(引用符で囲まれていないキーなどの癖なし)について話していると仮定します...
json textとそれほど違いはありません 。 JSONの検証以外にはあまり効果がありません 。
jsonb は、これら2つとは異なる獣です。これは、検索で使用できる操作がはるかに多い独自の内部形式を備えた本格的なデータ構造です。たとえば、 json 該当する=はありません (等式演算子)。 jsonb もっている。 (テキストコード> 意味的には異なりますが、持っています。)
インデックスを作成する方がはるかに賢明ですが、読み取りと書き込みの間に前後に変換する必要があります。
それを考えると、 jsonb ここでは適切な選択のようには見えません。
...したがって、決定する必要があるのは1つだけです。
データベースの列に有効なJSON値のみが含まれていることを確認しますか?データベースレベルで? または、そのデータベースのすべてのクライアント(通常はサーバーアプリ)が有効なデータのみを提供することを信頼していますか?
json どちらの方法でも比較的安全な選択です。 textの使用 検証がないため、理論的にはごくわずかなマージンでパフォーマンスを向上させることができますが、ベンチマークによって特定の数値を取得するだけです。ただし、JSON以外の値に対する保護機能はなく、クライアントの偶発的なバグに気付かない可能性があります。責任を持ってテストしてください!