MySQL 索引優化器選擇索引的規則是什麼?

時間 2021-05-08 08:48:47

1樓:mysqlops

MySQL的優化器不是簡單基於規則或 CBO(基於成本),而混合之用,但是傾向於基於成本優化為主的模式,但是一般都會根據統計資訊,以及 SQL語句的成本,甚至伺服器的空閒程度而選擇乙個合適的計畫....

並且mysql對SQL語句會進行改寫的,對於執行計畫有三個相關的引數:

optimizer_prune_level、optimizer_search_depth、optimizer_switch

另外至於MySQL查詢優化器的規則資料,我也沒有找到專門的資料,對於你的標題

「mysql索引優化器選擇索引的規則是什麼」.......這塊到是有資料,只要讀懂

MySQL手冊章節:

7.2. Obtaining Query Execution Plan Information

7.5. Optimization and Indexes

基本上問題就不大了,當然這2個章節告訴你的是索引及SQL優化技術理論基礎,還必須結合

實際的表結構、資料量及資料分布率、生產環境的硬體、伺服器的壓力等,又可能造成不一樣

的優化和建立索引策略.....關於索引建立和優化的一篇參考性文章:

mysql 索引是怎麼實現的?

說起索引就必須要先說下資料結構和演算法。資料結構和演算法是相互依存的,資料怎樣的儲存就意味著你需要可以使用什麼樣的演算法進行查詢。比如你是乙個無序陣列,你想查詢某乙個name A 的資料有哪些,你只能進行資料遍歷查詢了 但是這個陣列是按name排序的,這樣你就可以使用二分查詢或者同樣的是順序查詢,時...

MYSQL索引如何能提高查詢效率?

樹懶學堂 資料庫常見面試題 資料索引 B 樹索引與雜湊索引 Hash索引的優缺點 My ISAM和In no DB的使用場景 樹懶學堂索引是通過預先排列的順序,這樣在查詢時可以應用二分查詢等高效演算法。常規順序查詢,複雜性 O n 二分查詢複雜性 log2n 在n很大的情況下,兩者的效率差別及其懸殊...

如何理解Mysql的索引及他們的原理?

安靜的木小昊 100萬個資料,順序排列,它的維護效能很好,很容易增刪改資料.但是它的檢索效能很差,最差的情況要查詢100萬次.如果將每個記錄的主鍵按照平衡樹來排列,那麼檢索效能提公升很多,最壞情況查詢log2 100萬 次.但是維護效能下降,插入乙個記錄的代價變得高了.將主鍵以平衡樹的方式儲存主鍵,...