索引優化策略

2021-08-01 19:16:58 字數 874 閱讀 5625

注:名叫btree索引,大的方面看,都用的平衡樹,但具體的實現上,個引擎稍

有不同,比如,嚴格的說,ndb引擎,使用的是t-tree索引

myisam mnodb中預設使用b-tree索引;

但抽象一下   b_tree系統,可理解為為『排好序的快速查詢結構』

在memory(記憶體)表裡,預設是hash索引,hash的理論查詢時間複雜度為1(1)

疑問:jiran hash的查詢如此高效,為什麼不都用hash索引?

答:1:hsah函式計算後的機構是隨機的,如果是在磁碟上放置的資料,比如主鍵為id為例

,那麼隨著id的增長,id對應的行,在磁碟上隨機放置。

2:無法對範圍查詢進行優化

3:無法利用字首索引,比如 在tree中,field列的值『helloworld』,並新增索引

,查詢 xx=helloworld自然可以利用索引,xx-hello,也可以利用索引

(左字首索引),因為hash(『helloword』)和hash(『hello』),兩張關係仍未隨機

4:排序呢也無法優化

5:必須換行,也就是說,通過索引拿到資料位置,必須到表中取資料

例:where cat_id=3 and price>100;//查詢第三個欄目,100元以上的商品

誤:cat_id和price上都加上索引

最左字首:顧名思義,就是最左優先,例如中我們建立了lname_fname_age多列索引,相當於建立了(lname)單列索引,(lname,fname)組合索引以及(lname,fname,age)組合索引。

參考:

查詢優化策略 索引

1 索引分為聚簇索引和非聚簇索引兩種,聚簇索引 是按照資料存放的物理位置為順序的,而非聚簇索引就不一樣了 聚簇索引能提高多行檢索的 速度,而非聚簇索引對於單行的檢索很快。2 建立索引的目的是加快對錶中記錄的查詢或排序。為表設定索引要付出代價的 一是增加了資料庫的儲存空間,二是在插入和修改資料時 要花...

索引使用策略及優化

mysql的優化主要分為結構優化 scheme optimization 和查詢優化 query optimization 本章討論的高效能索引策略主要屬於結構優化範疇。本章的內容完全基於上文的理論基礎,實際上一旦理解了索引背後的機制,那麼選擇高效能的策略就變成了純粹的推理,並且可以理解這些策略背後...

MySQL索引優化策略分析

explain的用法 執行計畫 explain select from pms product where id 1 組合索引一定是最左匹配原則 如果你在表上建立了很多組合索引,索引檔案膨脹,修改 刪除 更新會比較慢expalin的作用 type 查詢的效果從上到下越來越差 優勢 提高查詢速度 表連...