[英]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.