Postgresql Postgres 9.4+中JSONB嵌入式ECOTO2模型的索引;
我不清楚如何使用Ecto2/Postgres 9.4索引存储为JSONB的嵌入式结构+ 我有一个带有两个嵌入式结构的模式,使用embeddes_one和embedded_many。它们是exto:map字段,在Postgres中表示为JSONB。我想知道如何确保它们被编入索引(使用Gin?)以便快速查询?我不确定这是否是自动发生的,是否需要向迁移中添加索引,或者是否需要使用psql等手动执行 只是想澄清一下这是如何工作的。 谢谢Postgresql Postgres 9.4+中JSONB嵌入式ECOTO2模型的索引;,postgresql,elixir,phoenix-framework,ecto,jsonb,Postgresql,Elixir,Phoenix Framework,Ecto,Jsonb,我不清楚如何使用Ecto2/Postgres 9.4索引存储为JSONB的嵌入式结构+ 我有一个带有两个嵌入式结构的模式,使用embeddes_one和embedded_many。它们是exto:map字段,在Postgres中表示为JSONB。我想知道如何确保它们被编入索引(使用Gin?)以便快速查询?我不确定这是否是自动发生的,是否需要向迁移中添加索引,或者是否需要使用psql等手动执行 只是想澄清一下这是如何工作的。 谢谢 我认为您只需要添加以下内容: create index(:clie
我认为您只需要添加以下内容:
create index(:clients, [:name], unique: true, using: :gin)
到您的迁移文件
或者,如果索引sql语句很复杂,您可以使用execute
来执行,因此它会是这样的:
execute("CREATE INDEX clients_name_index ON clients USING GIN (name)")
我还没有测试过它,但我相信它应该可以工作。这对于客户端模型中的顶级字段来说绝对是正确的,但我想问的是如何索引JSONB:map fieldsWell,去看看
JSONB索引
部分,jsonb列的语法基本上与普通列相同,因此我的第一个示例应该可以工作,除非您为索引添加一些特定选项,您将使用execute
。
execute("CREATE INDEX clients_name_index ON clients USING GIN (name)")