一、資料庫
資料庫,是儲存資料的容器,使用者可以對錶中的資料進行增刪改查等操作。
二、索引庫
索引庫,可以理解為索引的集合。
三、為什麼要有索引?
索引是為了提高查詢資料庫的效率。
索引太多,我們要統一管理,所以有了索引庫。
四、索引的原理:
對要查詢的字段建立索引其實就是把該字段按照一定的方式排序;建立的索引只對該字段有效,如果查詢的字段改變,那麼這個索引也就無效了。
索引太多會降低查詢的速度。
五、索引的優缺點**
優點:
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資料表主要支援如圖所示的儲存引擎,分為 事務...