索引原理和優化

2022-06-24 17:45:12 字數 718 閱讀 6645

mysql的基本儲存結構是頁(記錄都存在頁裡邊):

各個資料頁可以組成乙個雙向鍊錶

每個資料頁中的記錄又可以組成乙個單向鍊錶

使用索引後:

沒有用索引我們是需要遍歷雙向鍊錶來定位對應的頁,現在通過「目錄」就可以很快地定位到對應的頁上了!(二分查詢,時間複雜度近似為 o(logn))其實底層結構就是 b+樹,b+樹作為樹的一種實現,能夠讓我們很快地查詢出對應的記錄。

沒有索引時:

mysql 不得不首先以第一條記錄開始,然後讀完整個表直到它找出相關的行。表越大,花費時間越多。對於乙個有序字段,可以運用二分查詢(binary search),這就是為什麼效能能得到本質上的提高

選擇唯一性索引

為經常需要排序,分組和聯合操作的字段建立索引

為常作為查詢條件的字段建立索引

限制索引的數目:越多的索引,會使更新表變得很浪費時間

最左字首匹配原則,非常重要的原則。

如果查詢的時候查詢條件精確匹配索引的左邊連續一列或幾列,則此列可以被引用到。(由於最左字首原則,在建立聯合索引時,索引欄位的順序需要考慮字段值去重之後的個數,較多的放前面。order by 子句也遵循此規則)

盡量的擴充套件索引,不要新建索引

MySQL優化系列2 索引原理和優化

索引是為了加速對錶中資料行的檢索而建立的一種分散儲存的資料結構 索引能極大的減少儲存引擎需要掃瞄的資料量 索引可以把隨機io變為順序io 索引可以幫助我們在進行分組 排序等操作時,避免使用臨時表 為了說明索引的資料結構,先對比一下幾種常見的資料結構特點 在二叉樹中,左子樹的鍵值總是小於根的鍵值,右子...

索引優化及原理

oracle 之sql優化 索引的基本原理 一 1 索引的基本概念 1 建立索引的目的 以索引小的io換取表的大io。何時建立索引 當訪問的資料塊少於表中20 的資料時,建議使用索引。2 索引的 會使insert delete速度變慢 索引個數多的話速度就會慢 對於update語句,需要先判斷是否要...

MySQL優化(三) 索引原理及索引優化

b tree索引,它是目前關係型資料庫中查詢資料最為常用和有效的索引,大多數儲存引擎都支援這種索引。使用b tree這個術語,是因為mysql在create table或其它語句中使用了這個關鍵字,但實際上不同的儲存引擎可能使用不同的資料結構,比如innodb就是使用的b tree。中的b是指bal...