MySQL有哪些索引類型

從數據結構角度html

一、B+樹索引(O(log(n))):關於B+樹索引,能夠參考 MySQL索引背後的數據結構及算法原理mysql

二、hash索引:
a 僅僅能知足"=","IN"和"<=>"查詢,不能使用範圍查詢
b 其檢索效率很是高,索引的檢索能夠一次定位,不像B-Tree 索引須要從根節點到枝節點,最後才能訪問到頁節點這樣屢次的IO訪問,因此 Hash 索引的查詢效率要遠高於 B-Tree 索引
c 只有Memory存儲引擎顯示支持hash索引算法

三、FULLTEXT索引(如今MyISAM和InnoDB引擎都支持了)sql

四、R-Tree索引(用於對GIS數據類型建立SPATIAL索引)數據結構

從物理存儲角度spa

一、彙集索引(clustered index)code

二、非彙集索引(non-clustered index)htm

從邏輯角度blog

一、主鍵索引:主鍵索引是一種特殊的惟一索引,不容許有空值索引

二、普通索引或者單列索引

三、多列索引(複合索引):複合索引指多個字段上建立的索引,只有在查詢條件中使用了建立索引時的第一個字段,索引纔會被使用。使用複合索引時遵循最左前綴集合

四、惟一索引或者非惟一索引

五、空間索引:空間索引是對空間數據類型的字段創建的索引,MYSQL中的空間數據類型有4種,分別是GEOMETRY、POINT、LINESTRING、POLYGON。
MYSQL使用SPATIAL關鍵字進行擴展,使得可以用於建立正規索引類型的語法建立空間索引。建立空間索引的列,必須將其聲明爲NOT NULL,空間索引只能在存儲引擎爲MYISAM的表中建立

CREATE TABLE table_name[col_name data type]
[unique|fulltext|spatial][index|key][index_name](col_name[length])[asc|desc]

一、unique|fulltext|spatial爲可選參數,分別表示惟一索引、全文索引和空間索引;

二、index和key爲同義詞,二者做用相同,用來指定建立索引

三、col_name爲須要建立索引的字段列,該列必須從數據表中該定義的多個列中選擇;

四、index_name指定索引的名稱,爲可選參數,若是不指定,MYSQL默認col_name爲索引值;

五、length爲可選參數,表示索引的長度,只有字符串類型的字段才能指定索引長度;

六、asc或desc指定升序或降序的索引值存儲

相關文章
相關標籤/搜索