#### 1. 前言 ---- 簡單描述 MySQL 中,索引,主鍵,唯一索引,聯(lián)合索引 的區(qū)別,對數(shù)據(jù)庫的性能有什么影響(從讀寫兩方面) 這是一道非常經(jīng)典的 MySQL 索引面試題,意在看面試者是否了解索引的幾種類型以及索引的優(yōu)點和存在的弊端 #### 2. 幾種索引類型的區(qū)別 --- 索引是幫助數(shù)據(jù)庫高效獲取數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu),索引文件中記錄著對數(shù)據(jù)表數(shù)據(jù)的引用指針 主鍵是一種特殊的唯一索引,在一張表中只能有一個主鍵索引,主鍵索引用于唯一標識一條記錄 唯一索引用于確保某一列只包含各不相同的值,也就是說,唯一索引可以保證數(shù)據(jù)記錄的唯一性 聯(lián)合索引是指通過多個列建立的索引,比如有: 聯(lián)合主鍵索引,聯(lián)合唯一索引 #### 3. 索引讀寫方面對數(shù)據(jù)庫性能的影響 --- 讀: 索引可以極大的提高數(shù)據(jù)查詢速度,建立索引后會生成索引文件,所以索引本質(zhì)上是以空間換時間 寫: 索引會降低插入,刪除,更新的速度,是因為當數(shù)據(jù)發(fā)生改變后,會重新建立索引,那么就會重新構(gòu)建索引文件,導(dǎo)致增刪改操作變慢