PG資料庫索引重設

2021-09-28 16:07:01 字數 1066 閱讀 8224

今天在寫入pg表的時候,發現索引構建的有問題,需要重新設定。

建立索引方式:

create index index_name on table_a using btree (label_a,label_b,label_c);
我需要在索引中重新加入乙個label_d的字段,但是好像沒有直接加入的語句。

這樣子,我就想先刪除已經構建的索引,再重新建立索引。

在網上查詢到刪除索引的命令是:drop index index_name。

然而,當我在伺服器上執行的時候,卻提示我:

index "index_name" does not exist

schema查了很久,發現是由於pg資料庫的模式(schema)沒有切換。關於模式的定義可以看這裡

簡單的理解就是,乙個pg資料庫中可能有很多個模式,而每個模式中可以包含很多個表,不同模式中可以存在表名相同的不同表。

比如乙個pg表中有ba、bb、bc三個模式,那麼要精準定位某個表則需要寫成ba.table_name的形式。

這樣一來上面問題的原因就明確了,是因為雖然指定了索引,但是沒有指定索引所在的模式,導致指代的索引不明。

因此,第一步寫sql找到表所在的模式

select * from pg_indexes where tablename='table_name';
可以看到模式名稱(schemaname),表名、索引名稱及建立索引的命令。

第二步,刪除指定模式下的索引,格式為:模式名.表名

drop index schemaname.table_name;
第三步,檢視索引是否已經刪除,並新建索引即可

create index index_name on table_a using btree (label_a,label_b,label_c,label_d);
注意將你在查表中運用最頻繁的字段寫在label_a的位置,這樣效率會更高。

gp資料庫與pg資料庫

以前專案採用的都是oracle或者是mysql的資料庫,新的專案採用了gp資料庫 greenplum 在這之前只聽說過pg資料庫 postgresql gp資料庫官網 pg資料庫官網 經過學習和查詢,得知greenplum是利用了postgre資料庫的框架,也就相當於說是,gp資料庫是基於pg資料庫...

pg資料庫連線命令

psql help 命令可檢視資料庫連線幫助文件。pg dump 命令可檢視導數幫助文件。dyb為庫名,username為資料庫使用者 方法一,需要手動輸入密碼 psql u username h 196.128.0.19 p 5432 d dyb enter passwd for username...

python操作pg資料庫

描述 寫道postgresql 至少有至少 3 個 python 介面程式可 以訪問 posgresql psycopg,pypgsql 和 pygresql.第四個,popy,現在已經被廢棄 2003年,它 貢獻出自己的 與pygresql整合在一起 這三個介面程式各有長處,各有缺點,根據實踐結 ...