Postgresql
什麼時候應該在 PostgreSQL 上使用索引?
companyUuid
在我的 Java(Spring Boot 應用程序)中,我有以下實體定義,它通過屬性與公司實體有關係。我還將讓使用者按name
欄位搜尋。我們不使用實體關係註釋,例如@OneToMany
,…@Entity public class DemoEntity { @Id private long id; private UUID uuid; private UUID companyUuid; private String name; // code omitted for brevity }
**1.**由於這個表有一個FK
companyUuid
,我應該為它添加一個索引嗎?如果是這樣,以下索引定義是否正確?@Table(indexes = { @Index(unique = true, name = "company_uuid_key", columnList = "companyUuid") })
**2.**當使用者按欄位搜尋Demo實體記錄時
name
,我是否也應該為每個搜尋欄位添加索引(對於這種情況,pnlyname
欄位)?如果是這樣,以下索引定義是否正確?@Table(indexes = { @Index(unique = true, name = "name_key", columnList = "name") })
您是否應該索引作為外鍵的欄位
$$ fields in $$其他表? 是的。
該索引是否必須是唯一的? 可能不是。 考慮一個城鎮表,每個城鎮都存在於一個州內。
許多不同的城鎮將出現在一個特定的州內。狀態表上的主鍵(根據定義)將是唯一的
$$ within that table $$但相同的州 ID 會出現在許多城鎮記錄中。 如果您要允許按名稱搜尋,那麼您也應該對其進行索引。但是,請考慮這些名稱是否是唯一的
$$ within that table $$. 從上面的例子來看,有很多城鎮叫做“伯明翰”,但每個城鎮都在不同的州。