PostgreSQL
上一頁 第七章. 索引和鍵字 下一頁

部分索引

作者:這是從 Paul M. Aoki 1998-08-11的在 e-mail 列表中回答的問題中摘下來的。
部分索引(partial index)是建立在一個表的子集上的索引﹔該子集是用斷言(謂語)定義的。Postgres支援帶有任意斷言(謂語)的部分索引。我相信 IBM 用於 as/400 的 DB2 用單一子句的斷言支援部分索引。

部分索引的主要動機是:如果你發出的所有查詢都可以從落在某個範圍內的索引中獲益,我們為什麼要對整個表建立一個索引,而帶來相關的更多的空間/時間開銷呢?(還有其他原因﹔參閱 Stonebraker, M, 1989b 獲取更多細節。)

創建,更新和查詢部分索引的機制不算太差。麻煩的部分是索引的選擇(我該建立哪個索引?)和查詢最佳化(我該使用哪個索引?)﹔也就是說,涉及到決定什麼樣的斷言可以有效地匹配工作負荷/查詢的那部分。對那些深入資料庫理論的人而言,這個問題基本上類似於對應的物化的視圖問題,雖然有不同的開銷參數和公式。通常而言,這些問題對標準的SQL 型態是很難的問題﹔對黑盒擴展型態而言,這些問題是超級難的問題,因為選擇性評估理論太原始了。

參考 Stonebraker, M, 1989bOlson, 1993Seshardri, 1995 獲取更多資訊。


上一頁 首頁 下一頁
索引和鍵字 開頭 數組