mysql索引運用例項講解

2021-12-30 03:46:47 字數 1663 閱讀 7901

官方定義:

索引是幫助mysql高效獲取資料的資料結構,索引的本質是資料結構。

在資料庫之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料,

這樣就可以在這些資料結構上實現高階查詢演算法,這種資料結構就死索引(所使用的演算法是b樹演算法)

為了加快col2的查詢,可以維護乙個二叉查詢樹,每個節點分別包含索引鍵值和乙個指向對應資料記錄實體地址的指標,

這樣就可以運用二叉樹找在一定複雜度呢人獲取到相應資料,從而快速的檢索出符合條件的記錄。

索引本身也很大,不可能全部儲存在記憶體中,因此所有往往以索引檔案的形式儲存在磁碟上,

索引多指b樹(多路搜尋樹,不一定 是二叉樹)的結構。

優勢:類似圖書館建書目索引,提高資料檢索的效率,降低資料庫的io成本,通過索引列對資料進行排序,降低資料排序的成本,降低了cpu的消耗

劣勢:索引實際上也是一張表,該錶儲存了主鍵與索引字段,並指向實體表的記錄,索引雖然會大大提高查詢速度,同時卻會

降低更新表的速度,如對表進行insert,update,delete,因為表更新時,mysql不僅要儲存資料,還有儲存索引檔案每次更新新增了索引列的字段,都會調整因為更新所帶來的鍵值變化後的索引資訊

索引的目的在於提高效率,可以模擬字典,如果要查 mysql,沒有索引時,需要a-z查詢,如果有索引,

索引可以將資料排好序,然後查詢。

1,索引查詢演算法:

首先根據給定的索引值k1,在索引表上查詢出索引值等於k1的索引項,以確定對應子表在主表中的開始位置和長度,然後再根據給

定的關鍵字k2,在對應的子表中查詢出關鍵字等於k2的元素。

1,分塊查詢:

分塊查詢屬於索引查詢,其對應的索引表為稀疏索引,具體地說,分塊查詢要求主表中每個子表(又稱為塊)之間是遞增

(或遞減)有序的。即前塊中最大關鍵字必須小於後塊中的最小關鍵字,但塊內元素的排列可無序。它還要求索引值域為每塊中的最大關鍵字。

索引分類:

單值索引,乙個索引只包含單個列,乙個叫表可以有多個單列索引

唯一索引,索引列的值必須唯一,但允許空值

復合索引,乙個索引包含多個列

btree索引結構:

查詢過程:

若沒有索引則需要很多次io。

哪些情況需要建立索引:

1,主鍵自動建立唯一索引

2,頻繁作為查詢條件的字段

3,查詢中與其他表關聯的字段,外來鍵關係建立索引

4,頻繁更新的字段不適合建立索引

5,where條件裡用不到的字段不建立索引

6,高併發下傾向建立組合索引

7,查詢中排序的字段,排序欄位若通過索引取訪問將大大提高排序速度

8,查詢中統計或者分組字段

9,如果某個資料列包含許多重複的內容,建立索引就沒有太大的效果

MySQL 索引講解

索引是幫助mysql高效獲取資料的排好序的資料結構。索引的資料結構 索引的節點儲存的是key 索引列欄位 value 行資料磁碟檔案的位址指標 從索引表中找的時候,都是從根節點去找。二叉樹的資料結構 採取二分查詢的思想,o logn 的複雜度就可以完成對資料的查詢任務,查詢所需的最大次數等同於二叉樹...

mysql連線查詢例項 例項講解MySQL連線查詢

mysql連線查詢相信大家都有所了解,連線查詢是在資料庫查詢操作的時候肯定要用到的,下面就為您介紹mysql連線查詢的用法,供您參考學習。首先我們做兩張表 員工資訊表和部門資訊表,在此,表的建立只為講述連線的概念,所以字段非常的簡單 employeetb 員工資訊表 employeeid emplo...

MySQL索引的講解

mysql 的鎖按照範圍可以分為全域性鎖 表鎖 行鎖,其中行鎖是由資料庫引擎實現的,並不是所有的引擎都提供行鎖,myisam 就不支援行鎖,所以文章介紹行鎖會以innodb引擎為例來介紹行鎖。mysql 提供全域性鎖來對整個資料庫例項加鎖。語法 flush tables with read lock...