萌新也能看得懂之mysql索引底層原理

2021-10-08 23:45:32 字數 627 閱讀 5683

索引是什麼?索引就是一種資料結構,目的是為了加快查詢速度。

既然是為了加快查詢的資料結構,那就有以下幾種選擇。

1.hash索引。2.樹。

選擇hash索引:hash索引雖然查詢是o(1)級別的,但是不能進行範圍查詢。比如要查詢年齡20~30的,只能進行全表掃瞄,也就是對於範圍查詢索引失效,會進行全表掃瞄。

選擇樹結構:查詢演算法如果是有序的就可以選擇二分法查詢,為了使用二分法的資料結構有樹。樹的選擇方案很多,有二叉樹,b樹,紅黑樹等。mysql預設使用的是b+樹。

二叉樹,b樹有乙個最大的缺點就是磁碟io次數多。因為乙個節點就是乙個磁碟塊,二叉樹每個節點只儲存一行資料,也就是說一次磁碟io只能讀取到一行,通常需要nlogn次磁碟io才能找到查詢的資料,b數乙個節點倒是可以儲存多行資料,但是他也把每一行非索引列資料也存進來占用空間,要知道作業系統是以頁為單位進行磁碟io的,一頁是4kb,即雖然乙個節點儲存了多行,但是你一次io讀4kb,需要讀取多次才能全部讀取完成這個節點的資料。

因此我們選擇b+樹,它的特點是乙個節點儲存多行資料,並且只儲存了索引列的資料,全部列的資料是放在最後的葉子節點的。這裡需要注意對於主鍵索引,葉子節點儲存(存的是磁碟實體地址)的所有列的資料,。非主鍵索引存的是主鍵索引的位址,根據非主鍵索引找到主鍵索引就叫回表查詢。

HTML基礎,小白都能看得懂的文章

world wide web consortium 全球資訊網聯盟 成立於1994年,web技術領域最權威和具影響力的國際中立性技術標準機構 1.結構化標準語言 xhtml,xml 2.表現標準語言 css 用來美化頁面 3.行為標準 dom.ecmascript 通俗的來說就是增加前端頁面的功能 ...

一則很少人能看得懂的寓言!!

據說這則寓言至今沒有多少人能看得懂,尤其是80後尚未找到男朋友或女朋友的人,看得懂的人多數已身為人夫或人婦或人母,80後尚未找到男朋友或女朋友卻能看懂的人,很不幸,嘿嘿.向日葵公主是在河東岸邊遇見驢的。驢是黑色的,但白嘴白肚白蹄。公主想過河去,河西的城堡裡有等著娶她的王子。河不算深,但她穿著一身美麗...

只有程式設計師才能看得懂的生活哲理

生活與成功 2012 03 27 public class life 成功介面 param try 嘗試 param thinking 思考 return public static boolean success boolean try,boolean thinking time 一次艱辛的努力!...