當我更改基礎函數時,構建在函數上的索引會發生什麼變化?替換索引中使用的函數
說,我有一個函數clean_name()
定義爲:
CREATE OR REPLACE FUNCTION clean_name(n text)
RETURNS TEXT AS
$BODY$
DECLARE
rec TEXT;
BEGIN
EXECUTE
'SELECT Regexp_replace(' || quote_literal(n) || ', ''[a-z]'', '''', ''g'');'
INTO rec;
RETURN rec;
END;
$BODY$ LANGUAGE plpgsql IMMUTABLE
;
然後創建一個索引:
CREATE INDEX my_table_upper_name_btree
ON schema.my_table USING GIST (my_text_field);
但後來我決定要重新定義函數刪除大寫字母來代替。我創建的索引會發生什麼?它是否自行改變?我是否再次使用DROP
和CREATE
? VACUUM [ANALYZE] [FULL]
?
(有問題的功能類似,使用替代相當長的一系列仍在微調,但預計將穩定替代品的。)
我對答案感興趣,無論版本。 –
然後需要說明 - 最好伴隨着您實際使用的版本。 –