Index

查詢A列,按B排序-如果A和B一起是PK,是否需要索引?

  • December 22, 2018

我有一個表(在 Postgresql 中),它在 a 和 b 列上有一個主鍵。我想做一個查詢:

select * from table where a='XXX' order by b;

現有的主鍵是否有助於提高該查詢的性能?

我可以通過創建一個或多個其他索引來提高性能,例如。a 上的索引和/或 b 上的索引?

不,如果您已經有一個索引(a, b)並且 PK 約束意味著您有,那麼對於這個查詢,您不需要任何其他東西。

單獨的索引(a)(b)不會有用。

唯一可能比 (a, b) 上的索引更好的是覆蓋索引。假設您有一個查詢,其中只有SELECT b, c, d選擇列表中的列,而表有大約 10 多列。然後,一個索引(a, b) INCLUDE (c, d)或缺少該索引(a, b, c, d)將比表窄得多,並且完全適合查詢。這將產生一個更好的查詢計劃(只有一個獨立的搜尋,不需要訪問表),當然代價是您有一個針對特定查詢的附加索引。

引用自:https://dba.stackexchange.com/questions/225611