基になる関数を変更すると、関数に基づいて作成されたインデックスはどうなりますか?
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]
?
(問題の関数は似ていますが、代わりに、まだ調整中ですが安定していると予想されるかなり長い一連の置換を使用しています。)