簡體   English   中英

Postgresql 中是否需要對復合主鍵的一部分進行索引?

[英]Does indexing on a part of a composite primary key is needed in Postgresql?

我有一個包含復合主鍵的(大)表,由 5 列(a、b、c、d、e)組成。

我想有效地 select 所有具有兩列(a + e)的行到給定值。

在 PostgreSQL 中,我需要一個索引嗎? 或者數據庫會使用主鍵(甚至部分使用?)

我看過以下帖子,其中指定 MySQL 可以使用多列索引的最左側部分來有效地查詢行。 但我沒有在復合主鍵上找到 PostgreSQL 的任何內容。

為了獲得最佳性能,您需要在(a, e)上添加一個索引。

如果這是一個選項,您可以刪除主鍵並將其替換為(a, e, b, c, d) 然后主鍵索引將支持您的查詢,就唯一性而言,它同樣出色。

您還可以在(e)上嘗試使用單列索引。 PostgreSQL 可以組合對多個索引的掃描。 這不會像多列索引那樣快,但生成的索引會更小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM