這篇文章主要跟大家介紹mysql索引原理,希望對需要的朋友有幫助! (相關推薦:《mysql教學》)
#索引的目的
##索引的目的在於提高查詢效率,可以類比字典,如果要查“mysql”這個單詞,我們肯定需要定位到m字母,然後從下往下找到y字母,再找到剩下的sql。如果沒有索引,那麼你可能需要把所有單字看一遍才能找到你想要的,如果我想找到m開頭的單字呢?或是ze開頭的單字呢?是不是覺得如果沒有索引,這個事情根本無法完成?mysql索引原理
除了字典,生活中隨處可見索引的例子,如火車站的車次表、圖書的目錄等。它們的原理都是一樣的,透過不斷的縮小想要獲得資料的範圍來篩選出最終想要的結果,同時把隨機的事件變成順序的事件,也就是我們總是透過同一種查找方式來鎖定數據。 資料庫也是一樣,但顯然要複雜許多,因為不僅面臨等值查詢,還有範圍查詢(>、<、between、in)、模糊查詢(like)、並集查詢(或)等等。資料庫應該選擇怎麼樣的方式來處理所有的問題呢? 我們回想字典的例子,能不能把資料分成段,然後分段查詢呢?最簡單的如果1000條數據,1到100分成第一段,101到200分成第二段,201到300分成第三段…這樣查第250條數據,只要找第三段就可以了,一下子去除了90%的無效資料。 但如果是1千萬的記錄呢,分成幾段比較好?稍有演算法基礎的同學會想到搜尋樹,其平均複雜度是lgN,具有不錯的查詢效能。但這裡我們忽略了一個關鍵的問題,複雜度模型是基於每次相同的操作成本來考慮的,資料庫實現比較複雜,資料保存在磁碟上,而為了提高效能,每次又可以把部分資料讀入記憶體來計算,因為我們知道存取磁碟的成本大概是存取記憶體的十萬倍左右,所以簡單的搜尋樹很難滿足複雜的應用場景。以上是mysql索引原理是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!