Index

性能先低,加索引後高,降索引後保持高

  • February 15, 2019

我正在測試一個複雜的選擇查詢的性能。它非常慢。

使用解釋,我發現了一個ALLin 類型COLUMN。然後我ADD INDEX。結果很快就出來了。但是,當我DROP添加INDEX時,結果也很快出來。

我已經設置了query_cache_size=0。每個查詢結果都沒有記憶體。

我是一個新的學習者。一些專家可以告訴我為什麼以及我需要檢查哪些其他項目嗎?我怎樣才能回到第一個慢速場景並驗證我需要添加的索引是否對性能有很大影響?

樣本:

select col1,col2 from tbl1 groupby col1,col2;

show create table顯示“索引(col1),索引(col2)”

解釋顯示選擇查詢有 type= ALL

然後我添加index(col1, col2)which made explain type=RANGE

很可能該領域的統計數據已經過時了。使用全表掃描添加索引創建/更新的統計資訊。或者創建索引將您需要的所有數據拉入記憶體,就像任何掃描一樣。

添加索引只有在使用時才會表現得更好。添加索引,然後檢查查詢計劃。如果統計資訊是最新的並且查詢優化器選擇使用它,那麼它很有可能會提高性能。刪除統計資訊沒有用,因為它很可能會導致查詢計劃不理想。

有關統計資訊的更多資訊https://mariadb.com/kb/en/mariadb/documentation/optimization-and-tuning/engine-independent-table-statistics/

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