當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


PostgreSQL CREATE INDEX用法及代碼示例

為了更好地理解 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 使用二叉樹默認情況下。
  • 第四,列出一個或多個要存儲在索引中的列。
  • 這個ASCDESC指定排序順序。 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';

輸出:

相關用法


注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – CREATE INDEX。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。