2

たとえば、interestsJoe をchemistryand classical-music( 2 つの個別の値として) として保存すると、次のようにテーブルにクエリを実行できwhere interests in ('chemistry', 'biochem')、インデックスを使用して Joe などの人を効率的に見つけることができます。

PostgreSQL には、高度なクエリを可能にするために複数の値にインデックスを付けることができるようなデータ型がありますか? クエリのパフォーマンス上の利点は何ですか? そして、重要な注意事項は何ですか?

4

2 に答える 2

3

配列データ型を使用する場合は、インデックスを作成でき、インデックスを使用できます。次のトピックを確認してください: PostgreSQL は配列列にインデックスを付けることができますか?

より良いデータモデルの方が良いアイデアかもしれませんが、それはあなた次第です。

于 2012-09-25T10:12:38.147 に答える
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データ型はキーと値のペアを格納することを目的としており、この場合はキーのみが必要なため、これはちょっとしたハックです。

于 2012-09-25T10:44:07.957 に答える