這是一篇關於mysql索引技術的白話介紹篇,不知道直白的語言是否有助於你更容易理解mysql的索引技術。
什麼是索引,為什麼要用索引,要回答這倆個問題,我們可以先提出mysql使用上有什麼痛點,比如說mysql的效能,更具體舉例的話,比如說mysql的查詢效能,如何能更快的查詢到需要的資料,就是mysql的索引要解決的問題。mysql的索引是一種資料結構,通過這種資料結構能夠更快的實現資料查詢,所以我們要盡可能的使用索引來提高我們查詢的效能。下面這個圖說明了mysql中索引的定位
資料也就是指資料庫裡儲存的資料,這些資料通過一定規則建立索引資料,當我們查詢是會優先利用索引資料進行查詢,為什麼索引資料查詢資料更快呢?這就是我們下面要解釋的。
前面我們說過索引是一種資料結構,那麼索引資料就是利用這種資料結構對資料庫的資料進行加工儲存,從而使得索引資料具備對應資料結構的特點。比如b-tree,雜湊等。
快速查詢演算法中,b-tree和雜湊適合特定場景的查詢應用,索引mysql中有這倆種資料結構的索引,當然還有其他的。b-tree建立時會按照順序儲存,這有利於快速查詢。
在說下怎麼才能利用好索引,單獨的列可以利用索引 ,如果把單獨的列放到表示式中就無法利用到索引了;字首列可以利用到索引;多個列建立組合索引時,要注意順序,不同的順序查詢效率是不一樣的。
另外要說下聚合索引,聚合索引其實是資料的一種儲存方式,比如在innodb中,是把索引和資料一起儲存起來。需要注意的是,乙個表中只能有乙個聚合索引,因為資料只能儲存乙份。再說下覆蓋索引,如果乙個索引把查詢欄位也覆蓋,那麼這個索引可以稱為覆蓋索引,如果覆蓋索引可以把資料之間查詢到,就可以避免訪問表,那麼可以極大提高效能,但是mysql中只有b-tree索引支援覆蓋索引。
那麼索引就一定好嗎,索引也有弊端,比如說建立索引需要時間,對於很小的表來說,直接全表掃瞄就可以了,完全沒有必要。對於超級大的表,索引太大導致對效能的影響太大而降低效能,也不建議用索引。所以只有適當資料量的表考慮索引,當然我們有很多表其實也會太大或太小。索引還有 弊端嗎,有,那就是對insert\delete\update會有效能的影響。
白話Mysql索引
一 索引的優點 二 mysql索引型別 1.普通索引 2.唯一索引 3.全文索引 4.主鍵索引 三 建立表時宣告索引 1.索引看著挺高大上的乙個名字,說白了就是我們書最外面的目錄。2.假如你用新華字典來查詢 張 這個漢字,不使用目錄的話,你可能要從新華字典的第一頁找到最後一頁,可能要花二個小時。字典...
mysql用大白話解釋 大白話說說mysql索引
前面其實寫了好幾篇關於 mysql 索引的文章了,文章中有具體的例項和 sql 語句,這篇文章我想再用純大白話講講 mysql 索引,文中不涉及具體 sql 我之前甚至想過為啥要用資料庫來儲存資料,用普通的 txt 或者 word 這類檔案不行麼,這個問題其實可以從幾個方面來看,乙個是併發訪問資料加...
mysql中從分離 白話說mysql主從分離
mysql主從分離的原理 從庫在連線主庫的時候建立乙個io執行緒,用於接收主庫的binlog日誌,並將其儲存在relay log日誌,而主庫是建立乙個log dump執行緒來傳送binlog給從庫,從庫新開乙個sql執行緒讀取relay log的內容以做到資料的同步 主從分離的目的 1 將讀寫流量分...