5
我寫了一個簡單的腳本來每週重新編制我們的PG數據庫一次。它有一個簡單的邏輯:如何在純SQL中獲取現有索引的完整CREATE INDEX子句?
- 通過臃腫的字節量
- 查找創建從散列映射可變折射率子句得到頂部10索引(索引名 - >創建子句)
- 如果沒有,則 - 登錄到標準錯誤,並轉到下一個索引
- 創建新的索引同時
- 降舊索引同時
- 重命名新index
作爲一個適當的懶惰開發人員,我不喜歡這個概念,我必須不斷更新我的散列表。 (另一方面,我發現有兩個效率低下的指數,而這樣做。)
pg_index似乎很有用的信息,有沒有辦法從它重建一個創建索引子句?
很容易得到列列表,但我們使用不同的索引類型,不同的opclasses字段,部分索引...誰知道什麼。 重要的是要確保我們將得到與首先用於創建索引的相同子句。
這真是一個恥辱,沒有一個表的定義等效功能('pg_get_tabledef()'真的會很有用) – 2014-09-21 12:21:18
@a_horse_with_no_name是的,我同意。非常強烈。我通過將'pg_dump'作爲客戶端工具理解邏輯(降級),但缺少服務器端DDL導出作爲選項非常令人沮喪。 – 2014-09-21 12:22:36
哇!很高興它真的存在。即使知道這個函數的描述,我也不能輕易地谷歌它:) – skaurus 2014-09-21 12:23:17