postgreSQL是否会索引多值字段?

时间:2012-09-25 09:37:37

标签: postgresql

例如,我将Joe interests存储为chemistryclassical-music两个单独的值),您可以像查询{{{{ 1}}它将使用索引有效地找到像Joe这样的人。

PostgreSQL是否有这样的数据类型可以索引多个值以允许高级查询? queriues有哪些性能优势?什么是重要的警告

2 个答案:

答案 0 :(得分:2)

如果使用数组数据类型,可以将其编入索引并使用索引,请查看以下主题:Can PostgreSQL index array columns?

更好的数据模型可能是一个更好的主意,但这取决于你。

答案 1 :(得分:1)

您可以使用hstore数据类型。您只能存储密钥,而不是值。可以对hstore列建立索引,并且测试密钥的存在非常快。

类似的东西:

create table person 
(
   person_id integer not null primary key,
   name text not null,
   interests hstore
);

insert into person (person_id, name, interests)
values 
(1, 'Joe', 'chemistry => NULL, biochem => null'::hstore);

然后找到具有特定兴趣的人,您可以使用:

select *
from person
where interests ? 'chemistry'
   or interests ? 'biochem';

这有点像黑客,因为hstore数据类型用于存储键/值对,在这种情况下,您只需要键。