在 PostgreSQL 中,DROP INDEX刪除現有索引的語句。
用法:
DROP INDEX [ CONCURRENTLY]
[ IF EXISTS ] index_name
[ CASCADE | RESTRICT ];
讓我們分析以上語法:
- index_name:這用於在後麵指定要刪除的索引的名稱下降 index 條款。
- 如果存在:嘗試刪除不存在的索引將導致錯誤。為避免這種情況,您可以使用如果存在選項。如果您刪除不存在的索引如果存在, PostgreSQL 改為發出通知。
- CASCADE:如果索引有依賴對象,則使用CASCADE自動刪除這些對象和所有對象的選項依靠在那些對象上。
- 嚴格:這個RESTRICT選項指示 PostgreSQL 拒絕刪除索引,如果有任何對象依賴它。這下降 index 用途RESTRICT默認情況下。
- 同時: 當您執行 DROP INDEX 語句時,PostgreSQL 會獲取該表的排他鎖並阻止其他訪問,直到索引刪除完成。要強製命令在刪除索引之前等待衝突事務完成,您可以使用 CONCURRENTLY 選項。
出於舉例的目的,我們將使用演員 表從樣本數據庫為演示。
例:
以下語句為first_name 的列演員 表:
CREATE INDEX idx_actor_first_name ON actor (first_name);
有時,該詢問優化器不使用索引。例如,下麵的語句查找名為‘的actor約翰':
SELECT * FROM actor WHERE first_name = 'John';
查詢沒有使用idx_actor_first_name 之前定義的索引如以下 EXPLAIN 語句中所述:
EXPLAIN SELECT * FROM actor WHERE first_name = 'John';
這是因為查詢優化器認為隻掃描整個表來定位行更為優化。因此,該idx_actor_first_name在這種情況下沒有用,我們需要刪除它:
DROP INDEX idx_actor_first_name;
輸出:
相關用法
- PostgreSQL DROP DATABASE用法及代碼示例
- PostgreSQL DROP COLUMN用法及代碼示例
- PostgreSQL DROP TABLE用法及代碼示例
- PostgreSQL DROP SCHEMA用法及代碼示例
- PostgreSQL Drop用法及代碼示例
- PostgreSQL DROP TRIGGER用法及代碼示例
- PostgreSQL DROP ROLE用法及代碼示例
- PostgreSQL DROP TABLESPACE用法及代碼示例
- PostgreSQL CREATE INDEX用法及代碼示例
注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – DROP INDEX。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。