淺顯瞭解MySQL索引


索引在數據庫中是很重要的一個點,很重要,很重要,很重要!重要的事情說三遍!

1、什麼是索引

MySQL官方都索引的定義爲:索引(Index)是幫助MySQL高效獲取數據的數據結構。

一句話來解釋:索引是數據結構。

2、索引的分類

  • 主鍵索引(PRIMARY KEY)

​ 唯一的標識,主鍵不可重複,只能有一個列作爲主鍵。

  • 唯一索引(UNIQUE KEY)

​ 避免重複的列出現,唯一索引可以重複,多個列都可以標識爲 唯一索引。

  • 常規索引(KEY / INDEX)

​ 默認的,index,key關鍵字來設置。

  • 全文索引(FULLText)

​ 快速定位數據。

3、Mysql如何爲表字段添加索引?

1.添加PRIMARY KEY(主鍵索引)

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 

2.添加UNIQUE(唯一索引)

ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 

3.添加INDEX(普通索引)

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

4.添加FULLTEXT(全文索引)

ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 

5.添加多列索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

4、最左前綴原則

MySQL中的索引可以以一定順序引用多列,這種索引叫作聯合索引。如User表的name和city加聯合索引就是(name,city),而最左前綴原則指的是,如果查詢的時候查詢條件精確匹配索引的左邊連續一列或幾列,則此列就可以被用到。如下:

select * from user where name=xx and city=xx ; //可以命中索引
select * from user where name=xx ; // 可以命中索引
select * from user where city=xx ; // 無法命中索引            

這裏需要注意的是,查詢的時候如果兩個條件都用上了,但是順序不同,如 city= xx and name =xx,那麼現在的查詢引擎會自動優化爲匹配聯合索引的順序,這樣是能夠命中索引的。

由於最左前綴原則,在創建聯合索引時,索引字段的順序需要考慮字段值去重之後的個數,較多的放前面。ORDER BY子句也遵循此規則。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章