1、什麼是索引
在mysql官方對索引的定義為:索引是幫助mysql高效獲取資料的資料結構(類似書籍的目錄)。劃重點!!索引就是一種資料結構
通俗一點來說,索引就好比一本書前面的目錄,能加快查詢速度。在沒有索引的情況下,資料庫會遍歷全部200萬條資料後選擇符合條件的,但是有了相應的索引之後,資料庫會直接在索引中查詢符合條件的選項、
2、為什麼要用索引
就好比上面數的栗子就可以很明顯的看出來,索引的使用能夠使得我們的查詢變得更加高效,尤其是當表中的資料量越來越大時,索引對於效能的影響也就愈發重要,能夠將查詢效能提高好幾個數量級。
總結一下,索引的作用如下:
通過建立唯一性索引,可以保證資料庫表中的每一行資料的唯一性
大大加快資料的檢索速度
可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義
在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間
通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。
【注意!!】
【思考】既然索引能夠提高查詢效率為什麼不讓在新增表的時候把所有的字段都自動新增索引?
一般索引有如下的特點:
(1)索引不會包含有null值的列
復合索引也同樣,只要有一列含有null值,那麼這一列對於此符合索引就是無效的。
(2)使用短索引
列如,有乙個char(255)的列,如果錢10個或20個字元內,多數值是唯一的,那就對串列進行索引,如果可以的話應該指定乙個字首長度。短索引不僅可以提高查詢速度而且可以節省磁碟空間和i/o操作=
考慮建立索引的情況
不應該建立索引的情況
在將索引的具體類別的時候我們首先來對索引的增刪改查操作具體了解一下
1、在已有的資料表上建立索引
create index index_username on t_user
(username)
;create unique index index_username on t_user
(username)
;create index index_username on t_user
(id, username)
;
2、修改資料表結構新增索引
alter table t_user add index index_username
(username)
;alter table t_user add unique index index_username
(username)
;alter table t_user add index index_username
(id, username)
;
3、刪除索引
drop index index_username on t_user;
1、普通索引是最基本的索引,他沒有任何限制,myiasm中預設的b+樹型別的索引。
2、唯一索引
與普通索引類似,不同的是,索引列的值必須唯一,但是允許有空值(注意和主鍵不同)。
建立方法和普通索引類似,區別在於前面加乙個unique
3、全文索引
全文索引僅用於myisam表中。可以從char、varchar或text列中作為create table語句的一部分被建立,或是隨後使用alter table或create index被新增。
【注意】對於較大的資料集,將你的資料輸入乙個沒有fulltext索引的表中,然後建立索引,其速度比把資料輸入現有fulltext索引的速度更為快。
4、單列索引、多列索引
多個單列索引與單個多列索引的查詢效果不同。因為執行查詢時,mysql只能使用乙個索引,會從多個索引中選擇乙個限制最為嚴格的索引。
5、組合索引
如果乙個表中建立了多個索引值。使用的時候要遵循最左字首原則。
【舉個栗子】在title文章這個表當中有依次有tid 、author 、time 、gaiyao、 content這些字段並且分別為tid author time建立了索引。
最左字首原則就要求我們通過查詢的時候從左到右依次包含才能用到這個索引。所以下面的三個查詢語句中第二句就不可行。
6、聚集索引和非聚集索引
關於這兩個索引的概念在之前介紹myisam和innodb儲存引擎裡面就有詳細的講述,在此主要講述一下他們的區別。
(1)儲存特點的區別
(2)更新資料表的區別
【注意】聚集索引乙個表只能有乙個,而非聚集索引乙個表可以存在多個。
1、使用索引的優點
2、使用索引的缺點
資料庫 資料庫索引
索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...
資料庫mysql索引 資料庫 mysql索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...
資料庫索引
索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...