PostgreSQL 什麼是索引?

2021-09-12 09:25:29 字數 750 閱讀 5293

什麼是索引?

索引是提高資料庫效能的常用途徑。比起沒有索引,使用索引可以讓資料庫伺服器更快找到並獲取特定行。但是索引同時也會增加資料庫系統的日常管理負擔,因此我們應該聰明地使用索引。

每種索引演算法都分別適合某些特定的查詢型別,因為他們用了不同的索引結構。pg裡的所有索引都是「從屬索引」,索引在物理上與它描述得表檔案分離。作為乙個種資料庫物件,每個索引都在pg_class表裡有記錄,乙個索引頁的儲存結構與該索引的演算法(索引型別)相關。pg所有索引訪問方法都通過頁面來組織索引的內部結構,這樣就可以直接使用儲存管理模組提供的介面來訪問索引頁面。

索引本質上就是一些資料的鍵指與元祖識別符號之間的對映,這些識別符號確定了該索引鍵值在表中對於的元祖。

postgresql提供了5種索引方式

唯一索引、主鍵索引、多屬性索引、部分索引、表示式索引。

**1. 唯一索引:**不允許出現多個索引值相同的元組,可以用於強迫索引屬性值得唯一性,或者多個屬性組合值得唯一性。目前只有b-tree可以建立唯一索引。

**2. 主鍵索引:**如果表定義了主鍵,會自動在主鍵上建立唯一索引來實現主鍵約束。主鍵索引是唯一索引的特殊型別。

**3. 多屬性索引:**支援多於乙個的屬性上建立索引,多用於組合查詢。pg中的b-tree、gist和gin支援多屬性索引,最多可以在32個屬性上建立索引。除非表的查詢模式非常固定,否則超過三個屬性的索引幾乎沒有太大用處。當對乙個表建立多屬性索引時,對於表中的乙個元組,會依次去讀取該元組被索引屬性的值,使用這些值一起作為該元組的索引鍵值。多屬性索引中不僅可以

什麼是索引?

mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,...

什麼是索引?

mysql 資料庫舉例吧 一 什麼是索引?索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索...

什麼是索引

索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。資料庫使用索引以找到特定值,然後順指標找到包含該值的行。在表中建立索引,然後在索引中找到符合查詢條件的索引值,最後通過儲存在索引中的rowid 相當於頁碼 快速找到表中對應的記錄。索引的建立是表中比較有指向性的字段,相當於目錄,比如...