標籤:資料表 index str 必須 最好 否則 style 分詞 提高
一 索引基礎
1、定義:
在MySQL中,索引(index)也叫做“鍵(key)”,他是儲存引擎用於快速找到記錄的一種資料結構,可以提高查詢效率。
對查詢效能最佳化的最有效手段就是索引最佳化。
2、工作原理:
在MySQL中,索引是在儲存引擎層實現的,而不是在伺服器層。
在MySQL中,儲存引擎用類似的方法使用索引,其先在索引中尋找對應的值,然後根據匹配的索引記錄來找到對應的資料行,最後將資料結果集返回給用戶端。
3、索引類型:
(1)常規索引:
也叫普通索引(index或key),一張資料表中可以有多個常規索引。
一般沒有指明索引的類型,都是指常規索引。
(2)主鍵索引 - primary key
簡稱主鍵,提供唯一性限制式。一張表中只能有一個主鍵。
被標誌為自動成長的欄位一定是主鍵,但是主鍵不一定是自動成長。
一般把主鍵定義在例如編號之類的欄位上,其資料類型最好是數值。
(3)唯一索引 - unique key
提供唯一性限制式。一張表中可以有多個唯一索引。
(4)全文索引 - Full Text
可以提高全文檢索搜尋的查詢效率,一般使用Sphinx替代,但是Sphinx不支援中文檢索。
Coreseek是支援中文的全文檢索索引引擎,也稱作具有中文分詞功能的Sphinx。
實際項目中,用到的是Coreseek。
(5)外鍵索引 - Foreign key
簡稱外鍵,外鍵會自動和對應的其他表的主鍵關聯。
外鍵的主要作用是保證記錄的一致性和完整性,但是由於外鍵的效率不是很高,所以並不推薦使用外鍵。
注意:只有InnoDB儲存引擎的表才支援外鍵。如果要刪除父類中的記錄,必須先刪除子表中的額相應記錄,否則會出錯。
4、索引的方法
主要有以下幾種:
(1)B-Tree索引:
如果沒有特別指明類型,那一般說的就是B-Tree索引。B-Tree對索引是順序儲存的,因此和適合尋找範圍資料。
因為儲存引擎不在需要進行全表掃描來擷取需要的資料,故能夠加快訪問資料的速度。
注意:不同的儲存引擎以不同的方式使用B-Tree索引,效能也各不相同。
例如:MyISAM使用首碼壓縮技術使得索引更小,但InnoDB則按照原始的資料格式儲存索引。
再如:MyISAM通過資料的物理位置引用被索引的行,而InnoDB則根據主鍵引用被索引的行。
資料來源:MySQL索引詳情
MySQL中的索引