什麼是索引?
索引是用於加速從資料庫檢索資料的特殊查詢表。資料庫索引類似於書的索引(目錄)。 索引為出現在索引列中的每個值建立一個條目。
索引使用SELECT
查詢和WHERE
子句加速資料輸出,但是會減慢使用INSERT
和UPDATE
語句輸入的資料。
您可以在不影響資料的情況下建立或刪除索引。
CREATE INDEX
語句建立索引,指定建立索引的索引名稱和表或列名稱。CREATE INDEX
語句用於建立PostgreSQL索引。
語法
CREATE INDEX index_name ON table_name;
PostgreSQL中有幾種索引型別,如B-tree
,Hash
,GiST
,SP-GiST
和GIN
等。每種索引型別根據不同的查詢使用不同的演算法。 預設情況下,CREATE INDEX
命令使用B樹索引。
如果僅在一個表列中建立索引,則將其稱為單列索引。
語法:
CREATE INDEX index_name
ON table_name (column_name);
我們有一個名為「EMPLOYEES
」的表,具有以下資料:
在表「EMPLOYEES
」的「name
」列上建立一個名為「employees_index
」的索引。
執行以下建立語句:
CREATE INDEX employees_index
ON EMPLOYEES (name);
執行結果如下 -
在這裡,您可以看到在該錶上建立了一個名為「employees_index
」的索引 -
如果通過使用表的多個列建立索引,則稱為多列索引。
語法:
CREATE INDEX index_name
ON table_name (column1_name, column2_name);
讓我們在同一個表「EMPLOYEES
」上建立一個名為「multicolumn_index
」的多列索引
執行以下建立查詢語句:
CREATE INDEX multicolumn_index
ON EMPLOYEES (name, salary);
執行結果如下 -
建立唯一索引以獲取資料的完整性並提高效能。它不允許向表中插入重複的值,或者在原來表中有相同記錄的列上也不能建立索引。
語法:
CREATE UNIQUE INDEX index_name
on table_name (column_name);
例如,在employees
表的name
欄位上建立一個唯一索引,將會提示錯誤 -
CREATE UNIQUE INDEX unique_on_name
on employees (name);
如下所示(name
欄位中有兩個Minsu
的值) -
DROP INDEX方法用於刪除PostgreSQL中的索引。 如果你放棄一個索引,那麼它可以減慢或提高效能。
語法:
DROP INDEX index_name;
作為一個範例,我們現在來刪除在前面建立的名為「multicolumn_index
」的索引。
執行以下查詢語句:
DROP INDEX multicolumn_index;
現在,您可以看到名為「multicolumn_index
」的索引已被刪除/刪除。檢視 employees
表的結構 -
NULL
值的列。