有点小激动-Index Condition Pushdown Optimization
今天有點激動,因為在5.6的官方文檔中看到Index Condition Pushdown Optimization,簡稱ICP,這意味著什么,意味著mysql的優化器能夠像oracle的優化器那樣對索引列進行過濾,而不是像以前版本中只能使用前綴索引來過濾滿足查詢條件的行;
為了說明優化器是怎么利用ICP,可以使用下面查詢來說明其優化:
SELECT * FROM people??WHERE zipcode=’95054′??AND lastname LIKE ‘%etrunia%’??AND address LIKE ‘%Main Street%’;
在沒有ICP前,由于優化器只能只能使用前綴索引來過濾滿足條件的查詢,那么mysql只能夠利用索引的第一個字段zipcode,來掃描people表滿足ipcode=’95054’條件的記錄,而后面的lastname和firstname由于使用了模糊查詢,而不能在索引中繼續過濾滿足條件的記錄,這個行為在引擎層完成,這樣就導致了到服務器層對people的掃描增加了許多;
那么現在有了ICP,mysql在讀取people表前,繼續檢查滿足lastname和firstname條件的記錄,
那么ICP的優化在引擎層就能夠過濾掉大量的數據,這樣無疑能夠減少了對base table和mysql server的訪問次數,我們可以看到mysql優化器在也越來越智能,這對mysql fans也該是一個好消;由于這個功能在5.6出現,很想迫不及待的測試一把,但官網上還沒有提供下載5.6,上面的例子也是在文檔上獲得,沒有具體的實踐意義。
總結
以上是生活随笔為你收集整理的有点小激动-Index Condition Pushdown Optimization的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Install oracle10g us
- 下一篇: android app 集成 信鸽推送