例如,我将Joe interests
存储为chemistry
和classical-music
(两个单独的值),您可以像查询{{{{ 1}}它将使用索引有效地找到像Joe这样的人。
PostgreSQL是否有这样的数据类型可以索引多个值以允许高级查询? queriues有哪些性能优势?什么是重要的警告?
答案 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
数据类型用于存储键/值对,在这种情况下,您只需要键。