Postgresql

兩個邏輯上相等的索引在物理上是相同的索引嗎?

  • July 8, 2016

我有一個具有此定義的表:

CREATE TABLE public.delete_operation
(
 id bigint NOT NULL,
 parent_id bigint,
 pdu character varying,
 progress smallint NOT NULL DEFAULT 0,
 description character varying,
 state character varying(31) NOT NULL,
 status character(1) NOT NULL DEFAULT 'A'::bpchar,
 CONSTRAINT delete_operation_pkey PRIMARY KEY (id),
 CONSTRAINT "Ref_delete_operation_to_delete_operation" FOREIGN KEY (parent_id)
     REFERENCES public.delete_operation (id) MATCH SIMPLE
     ON UPDATE NO ACTION ON DELETE NO ACTION
)

隱式創建的 id 索引。

然後我想創建一個索引parent_id(它指的是與已經創建的索引相同的 id 列)。

我的問題是:它會是物理上相同的索引但名稱不同還是會加倍這個索引?

這兩個索引如何在物理上相同?的值id可能是更多範例:

1,2,3,4,6,7,8,9

parent_id值可能是:

NULL,1,1,8,NULL,NULL,2,NULL

所以問題的答案是:不,它們將是兩個完全獨立且不同的結構。它沒有任何其他意義。即使parent_id它們都一一與id值相同,它仍然沒有任何意義。因為伺服器無法知道或確定這些值總是相同的。可以更新行並且可以插入具有不同 id - parent_id 值的新行。所以必須使用兩個單獨的索引。

引用自:https://dba.stackexchange.com/questions/143099