0
PG内のインデックスは、ある種の行内部IDを格納するか、行の主キーを格納しますか?PostgreSQLは参照行をどのように索引付けしますか?
私はテーブルがPKを持っている必要はないので、それは内部行IDでなければならないと推測しています。しかし、私はこの質問に特定の答えを見つけることができません。
PG内のインデックスは、ある種の行内部IDを格納するか、行の主キーを格納しますか?PostgreSQLは参照行をどのように索引付けしますか?
私はテーブルがPKを持っている必要はないので、それは内部行IDでなければならないと推測しています。しかし、私はこの質問に特定の答えを見つけることができません。
各行にはシステム列ctid
(Oracleのrowid
に非常に似ています)に格納された内部「アドレス」があります。このctid値はインデックスに格納されます。
詳細は、マニュアルにあります。
したい場合は、列を選択することができます
select ctid, t.*
from your_table t;
だから、行意志へのアップデートctidが変更されるため、インデックスの更新が必要です。 – IamIC
@IamIC:更新によってインデックス付きの列が変更された場合のみです。そうでない場合、Postgresは "HOT"(ヒープ専用タプル)アップデートを使用することができます:https://github.com/postgres/postgres/blob/master/src/backend/access/heap/README.HOT参考:[this answer](https://dba.stackexchange.com/a/84859/1822)と[このPostgres wikiの記事](https://wiki.postgresql.org/wiki/Index-only_scans#Interaction_with_HOT) –