Raz*_*aza 12 postgresql indexing ruby-on-rails jsonb
我需要在Postgres中搜索jsonb字段的数组键的值.
field: {'array_key' : [1, 2, 3, 4]}
Run Code Online (Sandbox Code Playgroud)
是否可以添加索引array_key或是否有任何优化方法来搜索值?
搜索查询会是这样的
select * where field['array_key'].include?(2)
Run Code Online (Sandbox Code Playgroud)
Raz*_*aza 13
您可以在jsonb键上创建索引,
add_index :table_name, :field, :using => :gin, :expression => "(field->'array_key')", :name => 'index_table_name_on_field_array_keys'
Run Code Online (Sandbox Code Playgroud)
然后,您可以搜索索引键,因为,
where("table_name.field->'array_keys' @> ?", Array(2))
Run Code Online (Sandbox Code Playgroud)
假设您有一个带有“元数据”jsonb 列的“图片”表
add_index(
:pictures,
"(metadata->>'Year')",
name: "index_pictures_on_metadata_year"
)
Run Code Online (Sandbox Code Playgroud)
应该输出类似的东西
CREATE INDEX "index_pictures_on_metadata_year" ON "pictures" ((metadata->>'Year'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4697 次 |
| 最近记录: |