Postgresql
創建索引後是否需要分析表?
在我的事務中,我正在創建一個臨時表:
create temporary table x on commit drop as select ...
我還在該表上添加了一個索引:
create index on x(some_column);
現在有必要在那張
analyze
桌子上跑步嗎?還是我只需要在創建索引後分析表以進行更新/刪除?換句話說,我的問題是:創建索引是否已經意味著
analyze
執行?
如果索引只是在您的情況下的簡單列上,則在創建索引後不需要表。
ANALYZE
這是因為無論該列是否有索引,總是會收集有關表列的值分佈的統計資訊。
但是,如果您要為or之類的表達式編制索引,則應在創建索引後執行。 然後,PostgreSQL 還將收集有關索引表達式的值分佈的統計資訊。這會在自動分析執行時自動發生,但最好在創建索引後立即手動執行此操作,以便您立即獲得良好的統計資訊。
upper(some_column)``(CAST(some_column AS date))
ANALYZE