MySQL索引簡介

LiDaQian發表於2018-12-02

雖然MySQL有不止一個搜尋引擎,但是現在主流和預設的搜尋引擎是InnoDB,所以這裡也就講講InnoDB的索引。

索引作用

首先,要了解下索引的作用是什麼。我們在生產環境中經常會遇到xxSQL查詢花了很長時間,輕則導致應用響應變長,重則整個應用當機。這時候一般給表欄位加上索引就會解決問題,加了索引之後,MySQL掃描的行數減少,從而減少執行時間。

索引的資料結構

這裡講預設索引的資料結構:B+樹。索引結構:key:索引,value:主鍵。也就是說通過索引先查詢到主鍵,然後再根據主鍵查詢到行資料,這種行為成為回表。

最左字首原則

根據B+樹資料結構特點,會有個最左匹配原則,比如key儲存了aaa資料,查詢a% 就能命中索引,因為最左邊的a命中了,但是查詢%a就不能命中索引,還有組合索引也是同理。

總結

基礎還是很重要的,明白B+樹的特性才能掌握這些。

MySQL基本是當下微服務的效能瓶頸,避免長SQL,多表聯合查詢。需要多表聯合查詢時,可以在服務端進行聚合資料操作,不要過多利用MySQL伺服器的CPU,MySQL很難橫向擴充,但是服務端很容易。

相關文章