Postgresql
Postgresql - 外鍵約束是否自動創建索引?
根據 PGSQL 9.3 文件:
因為這並不總是需要,並且有很多關於如何索引的選擇,外鍵約束的聲明不會自動在引用列上創建索引。
然而,在我創建了這樣一個約束之後,當我執行時,
\d <table>
我看到實際上確實創建了一個索引:
Indexes: "table_primary_key" PRIMARY KEY, btree (id) "fki_table_product_foreign_key" btree (product)
什麼可以解釋為什麼會創建它?我是否仍需要在我的產品列上創建另一個索引以提高對其查詢的性能?
我發現 pgAdmin III 預設情況下會這樣做。當您使用 GUI 創建新的外鍵約束時,Definition 選項卡上有一個複選框“Auto FK Index”。直到現在我才注意到這一點,所以它解釋了為什麼要創建索引。
什麼可以解釋為什麼會創建它?
您創建了索引。或者您正在使用的*客戶端軟體為您完成了它。*Postgres 肯定沒有。
我是否仍需要在我的產品列上創建另一個索引以提高對其查詢的性能?
不,同一列上的第二個索引完全是浪費。甚至不確定第一個是否獲勝。可能,但不確定,就像手冊狀態一樣……