MySQL資料庫索引

2021-10-08 02:47:49 字數 1547 閱讀 3668

一、資料庫

資料庫,是儲存資料的容器,使用者可以對錶中的資料進行增刪改查等操作。
二、索引庫

索引庫,可以理解為索引的集合。
三、為什麼要有索引?

索引是為了提高查詢資料庫的效率。
索引太多,我們要統一管理,所以有了索引庫。

四、索引的原理:

對要查詢的字段建立索引其實就是把該字段按照一定的方式排序;建立的索引只對該字段有效,如果查詢的字段改變,那麼這個索引也就無效了。

索引太多會降低查詢的速度。

五、索引的優缺點**

優點:

1.首先明白為什麼索引會增加速度?

db在執行一條sql語句的時候,預設的方式是根據搜尋條件進行全表掃瞄,遇到匹配的物件就加入搜尋結果集合。如果我們對某一欄位增加索引,查詢時就會先去索引列表中一次定位到特定值的行數,大大減少遍歷匹配的行數,所以能明顯增加查詢的速度。

2.那麼任何時候都應該加索引麼?

反例:(1)如果每次都需要取到所有表記錄,無論如何都必須進行全表掃瞄了,那麼是否加索引也沒什麼意義了。

(2)對唯一的字段,例如「性別」這種大量重複值的字段,增加索引也沒什麼意義。

(3)對於記錄比較少的表,增加索引不會帶來速度的優化反而浪費了儲存空間,因為索引是需要儲存空間的,而且有個致命的缺點是對於update/delete/insert的每次執行,欄位的索引都必須重新計算更新。

所以並不是任何情況下都適合建立索引的。

六、結合專案使用

在實際專案中,當資料量特別大,資料查詢速度較慢的時候,我們可以建立索引,提高查詢效率。
七、索引失效

(1)如果索引了多列,要遵守最左字首法則。指的是查詢從索引的最左前列開始並且不跳過索引中的列。

過濾條件要使用索引,必須按照索引建立時的順序,依次滿足,一旦跳過某個字段,索引後面的字段都無法被使用。

(2)計算、函式導致索引失效

(3)索引中範圍條件右邊的列失效

(4)不等於(!= 或者<>)索引失效

結論:mysql 在使用不等於(!= 或者<>)的時候無法使用索引會導致全表掃瞄

(5)is not null無法使用索引,is null可使用索引

(6)like以萬用字元%開頭索引失效

(7)型別轉換導致索引失效

八、一般性建議

(1) 對於單鍵索引,盡量選擇過濾性更好的索引(例如:手機號,郵件,身份證)

(2)在選擇組合索引的時候,過濾性最好的字段在索引字段順序中,位置越靠前越好。

(3) 選擇組合索引時,盡量包含where中更多字段的索引

(4)組合索引出現範圍查詢時,盡量把這個字段放在索引次序的最後面 盡量避免造成索引失效的情況

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

mysql更新索引庫 Mysql資料庫索引增刪改查

一.索引的作用 一般的應用系統,讀寫比例在10 1左右,而且插入操作和一般的更新操作很少出現效能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。在資料量和訪問量不大的情況下,mysql訪問是非常快的,是否加索引對訪問影響不大。但是當資料量和訪問量劇增的...

MySQL資料庫索引

mysql資料庫索引 目錄 1 myisam與innodb的區別 2 索引的優缺點 3 如何選用索引 4 檢視索引 5 雜湊索引 6 b 樹 7 索引分類 1 myisam與innodb的區別 1 show engines 圖1.1 截圖1 a mysql資料表主要支援如圖所示的儲存引擎,分為 事務...