Postgresql

創建索引後是否需要分析表?

  • December 20, 2021

在我的事務中,我正在創建一個臨時表:

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

引用自:https://dba.stackexchange.com/questions/241257