什么是索引?
索引是用于加速從數(shù)據(jù)庫檢索數(shù)據(jù)的特殊查找表。數(shù)據(jù)庫索引類似于書的索引(目錄)。 索引為出現(xiàn)在索引列中的每個(gè)值創(chuàng)建一個(gè)條目。
索引使用SELECT查詢和WHERE子句加速數(shù)據(jù)輸出,但是會(huì)減慢使用INSERT和UPDATE語句輸入的數(shù)據(jù)。
您可以在不影響數(shù)據(jù)的情況下創(chuàng)建或刪除索引。
CREATE INDEX語句創(chuàng)建索引,指定創(chuàng)建索引的索引名稱和表或列名稱。CREATE INDEX語句用于創(chuàng)建PostgreSQL索引。
語法
CREATE INDEX index_name ON table_name;
PostgreSQL中有幾種索引類型,如B-tree,Hash,GiST,SP-GiST和GIN等。每種索引類型根據(jù)不同的查詢使用不同的算法。 默認(rèn)情況下,CREATE INDEX命令使用B樹索引。
如果僅在一個(gè)表列中創(chuàng)建索引,則將其稱為單列索引。
語法:
CREATE INDEX index_name
ON table_name (column_name);
我們有一個(gè)名為“EMPLOYEES”的表,具有以下數(shù)據(jù):
在表“EMPLOYEES”的“name”列上創(chuàng)建一個(gè)名為“employees_index”的索引。
執(zhí)行以下創(chuàng)建語句:
CREATE INDEX employees_index
ON EMPLOYEES (name);
執(zhí)行結(jié)果如下 -

在這里,您可以看到在該表上創(chuàng)建了一個(gè)名為“employees_index”的索引 -
如果通過使用表的多個(gè)列創(chuàng)建索引,則稱為多列索引。
語法:
CREATE INDEX index_name
ON table_name (column1_name, column2_name);
讓我們在同一個(gè)表“EMPLOYEES”上創(chuàng)建一個(gè)名為“multicolumn_index”的多列索引
執(zhí)行以下創(chuàng)建查詢語句:
CREATE INDEX multicolumn_index
ON EMPLOYEES (name, salary);
執(zhí)行結(jié)果如下 -

創(chuàng)建唯一索引以獲取數(shù)據(jù)的完整性并提高性能。它不允許向表中插入重復(fù)的值,或者在原來表中有相同記錄的列上也不能創(chuàng)建索引。
語法:
CREATE UNIQUE INDEX index_name
on table_name (column_name);
例如,在employees表的name字段上創(chuàng)建一個(gè)唯一索引,將會(huì)提示錯(cuò)誤 -
CREATE UNIQUE INDEX unique_on_name
on employees (name);
如下所示(name字段中有兩個(gè)Minsu的值) -

DROP INDEX方法用于刪除PostgreSQL中的索引。 如果你放棄一個(gè)索引,那么它可以減慢或提高性能。
語法:
DROP INDEX index_name;
作為一個(gè)示例,我們現(xiàn)在來刪除在前面創(chuàng)建的名為“multicolumn_index”的索引。
執(zhí)行以下查詢語句:
DROP INDEX multicolumn_index;
現(xiàn)在,您可以看到名為“multicolumn_index”的索引已被刪除/刪除。查看 employees 表的結(jié)構(gòu) -

NULL值的列。