Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 何时使用JSON[]而不是JSON?_Sql_Json_Database_Postgresql_Database Design - Fatal编程技术网

Sql 何时使用JSON[]而不是JSON?

Sql 何时使用JSON[]而不是JSON?,sql,json,database,postgresql,database-design,Sql,Json,Database,Postgresql,Database Design,假设我在Postgres中插入一个JSON对象数组,例如: [{ s: 'hi', a: true, b: false }, { s: 'bye', a: false, b: true }] 我可以: create table test(a json); insert into test values ('[{ "s": "hi", "a": true, "b": false }, { "s": "bye", "a": false, "b": true }]'); 或 这两种方法的优点/缺点

假设我在Postgres中插入一个JSON对象数组,例如:

[{ s: 'hi', a: true, b: false }, { s: 'bye', a: false, b: true }]
我可以:

create table test(a json);
insert into test values ('[{ "s": "hi", "a": true, "b": false }, { "s": "bye", "a": false, "b": true }]');


这两种方法的优点/缺点是什么?

切勿将两者混用

  • 使用
    jsonb
    ,存在较小的空间和解引用开销
  • 使用
    ARRAY
  • 在空间上有更大的开销,在使用
    JSON[]
    解引用时甚至有更大的开销(有害成分)
  • 更不用说,您将有两组运算符,这将非常混乱


    另外,除非您知道何时使用
    JSON
    ,否则不要使用
    JSON
    。您几乎总是想要
    JSONB
    。我甚至不会担心角落里的情况。

    永远不要把两者混为一谈

  • 使用
    jsonb
    ,存在较小的空间和解引用开销
  • 使用
    ARRAY
  • 在空间上有更大的开销,在使用
    JSON[]
    解引用时甚至有更大的开销(有害成分)
  • 更不用说,您将有两组运算符,这将非常混乱


    另外,除非您知道何时使用
    JSON
    ,否则不要使用
    JSON
    。您几乎总是想要
    JSONB
    。我甚至不会担心角落里的案子。

    永远不会。我看不到json[]的任何优点。永远不会。我看不出json[]有什么优点。
    create table test2(a json[]);
    insert into test2 values (array['{ "s": "hi", "a": true, "b": false }', '{ "s": "bye", "a": false, "b": true }']::json[]);