在MySQL數據庫中,數據庫對象表是存儲和操做數據的邏輯結構。
數據庫對象索引,則是一種有效組合數據的方式。經過索引對象,能夠快速查到數據對象表中的記錄,是提供性能的經常使用方式。
數據庫對象索引的出現,不只能夠提升數據庫管理系統的查找速度,並且還能夠保證字段的惟一性,從而實現數據庫表的完整性。
根據索引類型,能夠將索引分爲B型樹索引(BTREE)和哈希索引(HASH)。數據庫
InnoDB和MyISAM存儲引擎支持btree索引類型,memory存儲引擎支持hash索引。默認爲前者索引。性能
一個索引會包含表中按照必定順序排序的一列或者多列字段。索引的基本操做包括:建立,修改,刪除。code
索引有6種,分別是:普通索引,惟一索引,全文索引,單列索引,多列索引,空間索引。
索引的建立,有利有弊。建立索引能夠提供查詢速度,可是過多的索引會佔據許多磁盤空間。
如下狀況適合建立索引:對象
如下狀況不適合建立索引:排序
普通索引,就是在建立索引時,不添加任何限制條件(惟一,非空等限制)。該類型的索引能夠建立在任何數據類型的字段上。索引
惟一索引,就是建立索引時,限制索引的值必須是惟一的。經過該類型的索引,能夠更快第查詢某條記錄。
根據建立索引的方式,能夠分爲自動索引和手動索引。
自動索引
指的是在數據庫表裏設置完整性約束時,該表被系統自動建立索引。
手動索引
指的是手動在表上建立索引。
當設置表中的某個字段設置主鍵或者惟一完整性約束時,系統就會自動建立關聯該字段的惟一索引。ip
全文索引,主要關聯在數據類型爲char,varchar,text的字段,以便可以更加快速地查詢數據量較大的字符串類型的字段。字符串
多列索引,指的是建立索引時,所關聯的字段不是一個字段,而是多個字段。
雖然能夠經過所關聯的字段進行查詢,可是隻有查詢條件中使用了所關聯的字段中的第一個字段,多列索引纔會被使用。hash
create table kvmhost ( hostid int(10), hostname char(10), hostmac char(20), hostip char(20), index hostid_index(hostid));
結果以下圖:
it