一、什麼是索引
索引就是加快檢索表中資料的方法。資料庫的索引類似於書籍的索引。在書籍中,索引允許使用者不必翻閱完整個書就能迅速地找到所需要的資訊。在資料庫中,索引也允許資料庫程式迅速地找到表中的資料,而不必掃瞄整個資料庫。
二、索引的分類
1.直接建立索引和間接建立索引
直接建立索引: create index mycolumn_index on mytable (myclumn)
間接建立索引:定義主鍵約束或者唯一性鍵約束,可以間接建立索引
2.普通索引和唯一性索引
普通索引:create index mycolumn_index on mytable (myclumn)
唯一性索引:保證在索引列中的全部資料是唯一的,對聚簇索引和非聚簇索引都可以使用
create unique coustered index myclumn_cindex on mytable(mycolumn)
3.單個索引和復合索引
單個索引:即非復合索引
復合索引:又叫組合索引,在索引建立語句中同時包含多個欄位名,最多16個字段
create index name_index on username(firstname,lastname)
4.聚簇索引和非聚簇索引(聚集索引,群集索引)
聚簇索引:物理索引,與基表的物理順序相同,資料值的順序總是按照順序排列
create clustered index mycolumn_cindex on mytable(mycolumn) with
allow_dup_row(允許有重覆記錄的聚簇索引)
非聚簇索引:create unclustered index mycolumn_cindex on mytable(mycolumn)
[ps : mysql資料庫幾個基本的索引型別:普通索引、唯一索引、主鍵索引、全文索引]
三、索引的優點
1.建立唯一性索引,保證資料庫表中每一行資料的唯一性。
2.大大加快資料的檢索速度,這也是建立索引的最主要的原因。
3.加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。
4.在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。
5.通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的效能。
四、索引的缺點
1.建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。
2.索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。
3.當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度。
五、使用索引查詢一定能提高查詢的效能嗎?
通常,通過索引查詢資料比全表掃瞄要快,但是我們也必須注意到它的代價。
索引需要空間來儲存,也需要定期維護, 每當有記錄在表中增減或索引列被修改時,索引本身也會被修改。這意味著每條記錄的insert,delete,update將為此多付出4、5 次的磁碟i/o。因為索引需要額外的儲存空間和處理,那些不必要的索引反而會使查詢反應時間變慢,使用索引查詢不一定能提高查詢效能,索引範圍查詢(index range scan)適用於兩種情況:
1. 基於乙個範圍的檢索,一般查詢返回結果集小於表中記錄數的30%。
2. 基於非唯一性索引的檢索。
資料庫 資料庫索引
索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...
資料庫mysql索引 資料庫 mysql索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...
資料庫索引
索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...