MySQL的索引機制,複合索引的使用原則

一般都會用書本中的目錄來介紹索引機制,其實有些書本會有專門的快速檢索附錄,就很類似於數據庫的索引。
MySQL的索引包括4類:主鍵索引(primary key)、唯一索引(unique)、常規索引(index)、全文索引(fullindex)。

Show index from table_name; --查看錶中的索引
Show status like 'Handler_read%'  --查看索引的使用情況

複合索引,一般遵循最左前綴原則,如table_a 的 a b c 三列建複合索引

create index ind_table_a on table_a(a,b,c);

那麼,只有在條件中用到a,或者a、b,或者a、b、c這樣的情況下,纔會用到剛建的複合索引。

一、爲什麼要創建索引呢(優點)?
這是因爲,創建索引可以大大提高系統的性能。

第一, 通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性。
第二,可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。
第三,可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。
第四,在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。
第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。

二、建立方向索引的不利因素(缺點)
也許會有人要問:增加索引有如此多的優點,爲什麼不對錶中的每一個列創建一個索引呢?這種想法固然有其合理性,然而也有其片面性。雖然,索引有許多優點,但是,爲表中的每一個列都增加索引,是非常不明智的。這是因爲,增加索引也有許多不利的一個方面。

第一, 創建索引和維護索引要耗費時間,這種時間隨着數據量的增加而增加。
第二,索引需要佔物理空間,除了數據表佔數據空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。
第三,當對錶中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。

發佈了16 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章