在jsonb字段上添加索引

时间:2015-12-02 11:38:19

标签: ruby-on-rails postgresql indexing jsonb

我需要在Postgres中搜索jsonb字段的数组键的值。

field: {'array_key' : [1, 2, 3, 4]}

是否可以在array_key上添加索引,或者是否有任何优化方法来搜索值?

搜索查询将类似于

select * where field['array_key'].include?(2)

2 个答案:

答案 0 :(得分:12)

您可以在jsonb键上创建索引,

add_index :table_name, :field, :using => :gin, :expression => "(field->'array_key')", :name => 'index_table_name_on_field_array_keys'

然后,您可以搜索索引键,

where("table_name.field->'array_keys' @> ?", Array(2))

答案 1 :(得分:0)

鉴于你有一张照片'带有元数据的表格' jsonb专栏

object_list

应输出类似

的内容
function createFile(){
var object = new ActiveXObject("Scripting.FileSystemObject");
var file = object.CreateTextFile("C:\\Hello.txt", false);
file.WriteLine('Hello World');
file.WriteLine('Hope is a thing with feathers, that perches on the soul.'); 
file.Close();
}