索引類型
雲原生資料倉儲AnalyticDB PostgreSQL版支援如下索引類型:
B-Tree索引。
位元影像索引。
說明
位元影像索引(Bitmap Index)為每一個索引值都儲存一個位元影像,位元影像索引提供了和常規索引相同的功能且減少索引空間。對於擁有100至100,000個可區分值的列並且當被索引列經常與其他被索引列聯集查詢時,位元影像索引表現最佳。
BRIN索引(僅適用於Heap表)。
GIN索引。
GiST索引。
說明
雲原生資料倉儲AnalyticDB PostgreSQL版暫不支援Hash索引。
索引的選擇原則
什麼情況下需要建立索引:
如何選擇索引類型:
選擇性高的列使用B-tree索引。
例如,如果一個表有1000行資料並且一個列中有800個不同的值,則該索引的選擇度為0.8,索引的選擇性會比較高。唯一索引的選擇度總是1.0。
選擇度低的列使用位元影像索引。
例如區分值區間在100至100000之間的列,位元影像索引表現最好。
表資料量大,資料物理分布有一定有序性,查詢條件為<
、<=
、=
、>=
或>
,過濾效果較好的情況下,使用BRIN索引。
在巨量資料集的情況下,BRIN索引與B-Tree索引相比,佔用的空間極小,效能相同。
如何選擇合適的列建立索引:
如何更好的使用索引:
建立索引
您可以使用CREATE INDEX
命令在表上建立索引,建立索引樣本如下:
B-Tree索引
在employee表的gender列上建立一個B-Tree索引。
CREATE INDEX gender_idx ON employee (gender);
位元影像索引
在films表中的title列上建立一個位元影像索引。
CREATE INDEX title_bmp_idx ON films USING bitmap (title);
BRIN索引
在customer表的c_custkey列上建立BRIN索引。
CREATE INDEX c_custkey_brin_idx ON customer USING brin(c_custkey) with(pages_per_range=2);
GIN索引
GiST索引
在customer表的c_comment列上建立一個GiST索引支援全文檢索搜尋。
CREATE INDEX customer_idx ON customer USING gist(to_tsvector('english', c_comment));
重建索引
您可以使用REINDEX INDEX
命令重建索引,重建索引樣本如下:
重建索引my_index。
重建my_table表上的所有索引。
刪除索引
您可以使用DROP INDEX
命令刪除一個索引,刪除索引樣本如下:
說明
在載入大量資料時,您可以先刪除所有索引並載入資料,然後重建索引速度會更快。
索引資料收集
您可以使用VACUUM
命令收集索引資料,收集索引資料樣本如下: