不足:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert 、update 、delete因為更新表的收,mysql不僅要儲存資料,還有儲存一下索引檔案。建立索引會占用磁碟空間的索引檔案。
索引的型別和儲存引擎有關,每種儲存引擎所支援的索引型別不一定完全相同。
4.1 物理分類
根據儲存方式的不同,mysql 中常用的索引在物理上分為以下兩類。
b-樹索引
b-樹索引可以進行全鍵值、鍵值範圍和鍵值字首查詢,也可以對查詢結果進行 order by 排序。但 b-樹索引必須遵循左邊字首原則,要考慮以下幾點約束:
雜湊索引
4.2 邏輯分類
普通索引
普通索引是最基本的索引型別,唯一任務是加快對資料的訪問速度,沒有任何限制。建立普通索引時,通常使用的關鍵字是 index 或 key。
唯一性索引
唯一性索引是不允許索引列具有相同索引值的索引。如果能確定某個資料列只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字 unique 把它定義為乙個唯一性索引。
建立唯一性索引的目的往往不是為了提高訪問速度,而是為了避免資料出現重複。索引列的值必須唯一,但是允許有控制。如果是組合索引,則列值的組合必須唯一。
主鍵索引
主鍵索引是一種唯一性索引,即不允許值重複或者值為空,並且每個表只能有乙個主鍵。主鍵可以在建立表的時候指定,也可以通過修改表的方式新增,必須指定關鍵字 primary key。
注意:主鍵是資料庫考察的重點。注意每個表只能有乙個主鍵。空間索引
空間索引主要用於地理空間資料型別 geometry。
全文索引
全文索引只能在 varchar 或 text 型別的列上建立,並且只能在 myisam 表中建立。
為了提高索引的應用效能,mysql中的索引可以根據具體應用採用不同的索引策略。這些索引策略所對應的索引型別有聚集索引、次要索引、覆蓋索引、復合索引、字首索引、唯一索引等。
雖然索引可以加快查詢速度,提高 mysql 的處理效能,但是過多地使用索引也會造成以下弊端:
注意:索引可以在一些情況下加速查詢,但是在某些情況下,會降低效率。索引只是提高效率的乙個因素,因此在建立索引的時候應該遵循以下原則:
與此對應,在某些應用場合下建立索引不能提高 mysql 的工作效率,甚至在一定程度上還帶來負面效應,降低了資料庫的工作效率,一般來說不適合建立索引的環境如下:
資料庫mysql索引 資料庫 mysql索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...
mysql更新索引庫 Mysql資料庫索引增刪改查
一.索引的作用 一般的應用系統,讀寫比例在10 1左右,而且插入操作和一般的更新操作很少出現效能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。在資料量和訪問量不大的情況下,mysql訪問是非常快的,是否加索引對訪問影響不大。但是當資料量和訪問量劇增的...
Mysql資料庫的索引
今天看了下mysql資料庫的索引,基本的建立語句就不在贅述了,本文主要寫一些索引調優方面的見解。mysql資料庫的索引是與具體的儲存引擎相關的,想innodb以b tree索引為主,memory則以雜湊索引為主。針對innodb的b tree索引 1 多鍵索引時,要注意鍵的順序,一般來說鍵在越級時,...