Index

在 SQLite 中只有 PRIMARY KEY 索引的表中批量插入後執行 ANALYZE 有什麼好處?

  • August 17, 2018

如果我在 SQLite 中創建一個只有 PRIMARY KEY 索引的表,那麼在批量插入之後執行 ANALYZE 是否有任何作用,或者該鍵是否會自動保持最新?在這種情況下,我一次插入所有數據,並且永遠不會有任何記錄被刪除。

如果情況稍有不同怎麼辦:表沒有 ROWID,主鍵是多列上的聚集索引——這會改變這裡的智慧嗎?

文件說:

ANALYZE 收集的統計資訊不會隨著數據庫內容的變化而自動更新。如果數據庫的內容髮生了顯著變化,或者數據庫模式發生了變化,那麼應該考慮重新執行 ANALYZE 命令以更新統計資訊。

在這裡,“顯著”意味著新數據對特徵的改變如此之大,以至於索引不再有用,或者它比以前有用得多。

但是,對於主鍵,選擇性通常不會改變,因此不需要在更大的插入後執行 ANALYZE。

(使用或不使用 ROWID 對此沒有任何影響。)

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