索引在資料庫中的作用是快速找出某個列中一個特定值的行,不使用索引的話,MySQL必須從第一條記錄周遊到相關行,表越大,花費的時間越多,但是如果有索引,就能快速的到達某個位置去搜尋資料檔案,索引對于優化資料庫查詢速度有着不可替代的作用,本文主要給大家講解一下MySQL資料庫中,索引的優缺點,分類以及設計原則。

索引的優點
1.通過建立唯一索引,可以保證資料庫每一行資料的唯一性
2.可以大大提高查詢速度
3.可以加速表與表的連接配接
4.可以顯著的減少查詢中分組和排序的時間。
索引的缺點
1.建立索引和維護索引需要時間,而且資料量越大時間越長。
2.建立索引需要占據磁盤的空間,如果有大量的索引,可能比資料檔案更快達到最大檔案尺寸。
3.當對表中的資料進行增加,修改,删除的時候,索引也要同時進行維護,降低了資料的維護速度。
索引的分類
1.普通索引(Normal):基本索引類型,允許在定義索引的列裡插入空值或重複值。
2.唯一索引(Unique):索引列值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。主鍵索引是一種特殊的唯一索引,不允許有空值。
3.單列索引:隻包含一個列的索引,一個表中可以有多個。
4.組合索引:包含多個列的索引,查詢條件包含這些列的最左邊的字段的時候,索引就會被引用,遵循最左綴原則。
5.全文索引(Full Text):在定義的值中支援全文查找,允許空值和重複值,可以在CHAR,VARCHAR或者TEXT字段類型上建立,僅支援MyISAM存儲引擎。
6.空間索引:針對空間資料做的索引,支援的資料類型有4種,分别是GEOMETRY,POINT,LINESTRING和POLYGON。建立空間索引的列必須聲明為非空值(NOT NULL),僅支援MyISAM存儲引擎。
索引的設計原則
1.不是越多越好。
2.常更新的表越少越好。
3.資料量小的表最好不要建立索引。
4.不同的值比較多的列才需要建立索引。
5.某種資料本身具備唯一性的時候,建立唯一性索引,可以保證定義的列的資料完整性,以提高查詢熟度。
6.頻繁進行排序或分組的列(group by或者是order by)可以建立索引,提高搜尋速度7.經常用于查詢條件的字段應該建立索。