1.1 概念
在mysql中,索引的關鍵字為index也叫做「鍵(key),是儲存引擎用於快速找到記錄的一種資料結構。
當表中的資料量越來越大時,索引對於良好的效能非常關鍵。索引優化應該是對查詢效能優化最有效的手段,建立乙個真正最優的索引經常需要重寫sql查詢語句。
注意:索引一般建立在經常的查詢的字段上。
1.2 索引的工作原理
要理解mysql中索引的工作原理,最簡單的方法就是去看一看一本書的索引部分:比如你想在一本書中尋找某個主題,一般會先看書的索引目錄,找到對應的章節、對應的頁碼後就可以快速找到你想看的內容。
在mysql中,儲存引擎用類似的方法使用索引,其先在索引中查詢對應的值,然後根據匹配的索引記錄找到對應的資料行,最後將資料結果集返回給客戶端。
1.3 索引的型別
mysql索引的基礎型別有四種,分別是主鍵索引、唯一索引、普通索引和全文索引。
主鍵索引:
主鍵是一種唯一性索引,但它必須指定為primary key,每個表只能有乙個主鍵。
唯一索引:
索引列的所有值都只能出現一次,即必須唯一,值可以為空。
普通索引 :
基本的索引型別,值可以為空,沒有唯一性的限制。
全文索引:
全文索引的索引型別為fulltext。全文索引可以在varchar、char、text型別的列上建立。可以通過alter table或create index命令建立。對於大規模的資料集,通過alter table(或者create index)命令建立全文索引要比把記錄插入帶有全文索引的空表更快。myisam支援全文索引,innodb在mysql5.6之後支援了全文索引。
全文索引不支援中文需要借sphinx(coreseek)或迅搜技術處理中文。
#建立測試表,建立表的指令碼如下:
create table data1
(id int,
studentnumber nvarchar(30),
subjectname nvarchar(30),
score int
)
2.1 建立主鍵索引
建立主鍵索引的語法結構如下:
alter table `table_name` add primary key ( `column` )
eg:為data1建立列為id的主鍵索引,指令碼語句如下:
alter table data1 add primary key (id)
2.2 建立唯一索引
建立唯一索引的語法結構如下:
alter table `table_name` add unique (
column`
)
eg:為data1建立列為studentnumber的唯一索引,指令碼語句如下:
alter table data1 add unique (
studentnumber
)
2.3 建立普通索引
建立普通索引的語法結構如下:
alter table `table_name` add index index_name ( `column` )
eg:為data1建立列為subjectname 的普通索引,指令碼語句如下:
alter table data1 add index index_name (subjectname)
2.4 建立全文索引
建立全文索引的語法結構如下:
alter table `table_name` add fulltext ( `column`)
eg:為data1建立列為subjectname 的全文索引,指令碼語句如下:
alter table data1 add fulltext index fulltext_123(studentnumber,subjectname);
注意,執行上述指令碼時候,有時候會出現如下錯誤資訊:
報此錯誤是因為不支援全文索引,解決辦法:
1、檢視建立表時用的哪種引擎,如果是innodb,改為myisam,innodb不支援fulltext型別的索引
2、檢視配置檔案mysql.ini,搜尋default-storage-engine= ,如果是innodb,改為myisam。重啟mysql服務。
索引查詢有兩種方式,分別如下:
方法一:
方法二:
可利用alter table或drop index語句來刪除索引。類似於create index語句,drop index可以在alter table內部作為一條語句處理,語法如下。
drop index index_name on talbe_name
alter table table_name drop index index_name
alter table table_name drop primary key
MYSQL索引 學習筆記
索引分類 索引失效 索引帶來的弊端 幫助mysql進行高效查詢的資料結構 有序 在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料,這樣就可以在這些資料結構上實現高階查詢演算法,這種資料結構就是索引 換言之,索引就是某種資料結構 如下圖所示 左邊是資料...
mysql索引學習筆記
mysql索引學習筆記 1.索引的優劣 優 加快查詢速率 劣 影響對錶的添刪改操作的速率,增大檔案大小 可能索引檔案比資料檔案還大 所以,在往資料庫匯入大量資料之前,應該先暫時刪除索引,資料匯入完成後再統一建立索引。www.2cto.com 2.建立索引的原則 1 不過度索引 2 索引應該建在需要頻...
MySQL索引學習筆記
需求分析 首先,先假設有一張表,表的資料有10w條資料,其中有一條資料是nickname css 如果要拿這條資料的話需要些的sql是 select from award where nickname css 一般情況下,在沒有建立索引的時候,mysql需要掃瞄全表及掃瞄10w條資料找這條資料,如果...