PostgreSQL 表上可以進行哪種索引?
索引用於加速 PostgreSQL 和一般關係資料庫中的查詢執行。PostgreSQL 表主要支援幾種索引型別。讓我們簡要討論 3 種常用的索引型別 -
雜湊索引
這些索引只能處理相等比較。換句話說,如果我想檢查 itemA 是否等於 itemB,那麼雜湊索引很有用。它不適合其他型別的操作,如 >、<、>=、<=。假設我有一個成績表,定義如下 -
| 姓名 | 學號 | 百分比分數 |
|---|---|---|
| Aniket | 12 | 24 |
| Siddhi | 45 | 65 |
| Yash | 26 | 42 |
| Isha | 56 | 87 |
現在,如果我可以在學號列上新增雜湊索引,如下所示 -
CREATE INDEX roll_no_index ON marks USING hash (roll_no);
對於涉及學號列上相等比較的查詢,將使用此索引。下面給出一個示例 -
SELECT * from marks WHERE roll_no = 12
但是,如果您有其他型別的比較,例如
SELECT * from marks where roll_no > 40
那麼此索引將毫無用處,PostgreSQL 將組織查詢計劃,假設索引不存在。
B 樹索引
這是 PostgreSQL 使用的預設索引。換句話說,如果您沒有顯式指定索引型別,PostgreSQL 將建立 B 樹索引。PostgreSQL 對所有比較操作(>=、<=、>、<、=)都使用此索引。這使得它比雜湊索引更好。它可以使用以下命令建立 -
CREATE INDEX index_name on table_name (columnName1, columnName2,…)
從上面的語法可以看出,您還可以建立多列索引。是建立單列索引還是多列索引取決於查詢的 WHERE 部分中是否會經常使用一個或多個列。
GiST 索引
GiST 代表廣義搜尋樹。此索引非常頻繁地與 PostgreSQL 的一個流行擴充套件一起使用,稱為 PostGIS。PostGIS 用於對幾何物件執行地理空間查詢。現在,諸如包含、相交等操作無法從 B 樹索引中獲益(B 樹索引只能處理比較和相等檢查)。GiST 索引在這裡非常方便。它通常應用於表的幾何列,例如 -
CREATE INDEX geom_index on myGeomTable USING gist(geom)
這裡有一個關於 GIS 的很好的解釋 - https://postgis.net/workshops/postgisintro/indexing.html
除了這些索引型別之外,還有其他索引型別:GIN、BRIN 等。您可以在此處閱讀更多相關資訊 - https://www.enterprisedb.com/postgres-tutorials/overview-postgresql-indexes
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP