為了更好地理解 PostgreSQL 中索引背後的概念,假設您需要在電話簿上查找 Raju Kumar 的電話號碼。了解電話簿上的姓名按字母順序排列後,您首先查找姓氏為 Kumar 的頁麵,然後查找名字 Raju,最後得到他的電話號碼。
假設電話簿上的名字不是按字母順序排列的,你必須翻閱所有頁麵,檢查每個名字,直到找到 Raju Kumar 的電話號碼。這稱為順序掃描,您可以遍曆所有條目,直到找到您要查找的條目。
與電話簿類似,表中存儲的數據應按特定順序組織,以加快各種搜索速度。這就是索引發揮作用的原因。
在PostgreSQL的,創建索引語句來定義表的新索引。
用法: CREATE INDEX index_name ON table_name [USING method] ( column_name [ASC | DESC] [NULLS {FIRST | LAST }], ... );
讓我們分析以上語法:
- 首先,在後麵指定索引名稱創建索引條款。索引名稱應該有意義且易於 memory 。
- 其次,指定索引所屬的表的名稱。
- 三、指定索引方法如二叉樹,散列,要旨,專家,杜鬆子酒和布林. PostgreSQL 使用二叉樹默認情況下。
- 第四,列出一個或多個要存儲在索引中的列。
- 這個ASC和DESC指定排序順序。 ASC 是默認設置。
- NULL 優先或者最後一個空指定之前或之後的空值排序非空。這NULL 優先是默認值,當DESC被指定並且最後一個空是默認值,當DESC未指定。
出於演示目的,我們將使用地址表從樣本數據庫為演示。
例:
以下查詢查找電話號碼為223664661973:
SELECT * FROM address WHERE phone = '223664661973';
很明顯,數據庫引擎必須掃描整個地址表來查找地址,因為電話列沒有可用的索引。
要顯示查詢計劃,請使用 EXPLAIN 語句,如下所示:
EXPLAIN SELECT * FROM address WHERE phone = '223664661973';
這將導致以下結果:
為值創建索引電話的列地址表,您使用以下語句:
CREATE INDEX idx_address_phone ON address(phone);
現在,如果再次執行查詢,您會發現數據庫引擎使用索引進行查找:
EXPLAIN SELECT * FROM address WHERE phone = '223664661973';
輸出:
相關用法
- PostgreSQL DROP INDEX用法及代碼示例
- PostgreSQL CREATE DOMAIN用法及代碼示例
- PostgreSQL CREATE TABLE用法及代碼示例
- PostgreSQL CREATE SEQUENCE用法及代碼示例
- PostgreSQL CREATE SCHEMA用法及代碼示例
- PostgreSQL CREATE PROCEDURE用法及代碼示例
- PostgreSQL CREATE TRIGGER用法及代碼示例
- PostgreSQL CREATE ROLE用法及代碼示例
- PostgreSQL CREATE TABLESPACE用法及代碼示例
注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – CREATE INDEX。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。