MySQL數據庫對象-索引

1. 概述

在MySQL數據庫中,數據庫對象表是存儲和操做數據的邏輯結構。
數據庫對象索引,則是一種有效組合數據的方式。經過索引對象,能夠快速查到數據對象表中的記錄,是提供性能的經常使用方式。
數據庫對象索引的出現,不只能夠提升數據庫管理系統的查找速度,並且還能夠保證字段的惟一性,從而實現數據庫表的完整性。
根據索引類型,能夠將索引分爲B型樹索引(BTREE)和哈希索引(HASH)。數據庫

InnoDB和MyISAM存儲引擎支持btree索引類型,memory存儲引擎支持hash索引。默認爲前者索引。性能

一個索引會包含表中按照必定順序排序的一列或者多列字段。索引的基本操做包括:建立,修改,刪除。code

2. 索引分類

索引有6種,分別是:普通索引,惟一索引,全文索引,單列索引,多列索引,空間索引。
索引的建立,有利有弊。建立索引能夠提供查詢速度,可是過多的索引會佔據許多磁盤空間。
如下狀況適合建立索引:對象

  • 常常被查詢的字段,即在where子句種出現的字段
  • 在分組的字段,即在group by 子句種出現的字段
  • 存在依賴關係的子表和父表之間的聯合查詢,即主鍵或者外鍵字段
  • 設置惟一完整性的約束字段

如下狀況不適合建立索引:排序

  • 在查詢中不多被使用的字段
  • 用戶許多重複的字段

2.1 不一樣索引的概念

2.1.1 普通索引

普通索引,就是在建立索引時,不添加任何限制條件(惟一,非空等限制)。該類型的索引能夠建立在任何數據類型的字段上。索引

2.1.2 惟一索引

惟一索引,就是建立索引時,限制索引的值必須是惟一的。經過該類型的索引,能夠更快第查詢某條記錄。
根據建立索引的方式,能夠分爲自動索引和手動索引。
自動索引
指的是在數據庫表裏設置完整性約束時,該表被系統自動建立索引。
手動索引
指的是手動在表上建立索引。
當設置表中的某個字段設置主鍵或者惟一完整性約束時,系統就會自動建立關聯該字段的惟一索引。ip

2.1.3 全文索引

全文索引,主要關聯在數據類型爲char,varchar,text的字段,以便可以更加快速地查詢數據量較大的字符串類型的字段。字符串

2.1.4 多列索引

多列索引,指的是建立索引時,所關聯的字段不是一個字段,而是多個字段。
雖然能夠經過所關聯的字段進行查詢,可是隻有查詢條件中使用了所關聯的字段中的第一個字段,多列索引纔會被使用。hash

3. 索引操做

3.1 普通索引

3.1.1 建立表時建立普通索引

create table kvmhost ( hostid int(10), hostname char(10), hostmac char(20), hostip char(20), index hostid_index(hostid));
結果以下圖:



it

3.1.2 在已經存在的表上建立普通索引

3.1.3 經過SQL語句alter table建立普通索引

3.2 惟一索引

3.2.1 建立表時建立惟一索引

3.2.2 在已經存在的表上建立惟一索引

3.2.3 經過SQL語句alter table建立惟一索引

3.3 全文索引

3.3.1 建立表時建立全文索引

3.3.2 在已經存在的表上建立全文索引

3.4.3 經過SQL語句alter table建立全文索引

3.4 多列索引

3.4.1 建立表時建立多列索引

3.4.2 在已經存在的表上建立多列索引

3.4.3 經過SQL語句alter table建立多列索引

相關文章
相關標籤/搜索