Postgresql
兩個邏輯上相等的索引在物理上是相同的索引嗎?
我有一個具有此定義的表:
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 值的新行。所以必須使用兩個單獨的索引。