[TOC](MySQL主鍵、唯一索引、聯合索引的區別和作用) # 0. 簡介 索引是一類特殊的`文件`,用來存儲檢索信息,使資料庫查找更加快速。 # 1. 主鍵 主鍵是一類特殊的唯一索引,選擇某一列元素作為主鍵,用來表示每一行元素的特殊性,其特點如下 - 在一個數據表中只有一個主鍵; - 主鍵不能為 ...
目錄
0. 簡介
索引是一類特殊的文件
,用來存儲檢索信息,使資料庫查找更加快速。
1. 主鍵
主鍵是一類特殊的唯一索引,選擇某一列元素作為主鍵,用來表示每一行元素的特殊性,其特點如下
- 在一個數據表中只有一個主鍵;
- 主鍵不能為空(null);
- 主鍵的列數據不能重覆(唯一索引的特點)。
2. 唯一索引
唯一索引是資料庫中的一個索引類型,用來保證某列元素的數據唯一性,其特點如下:
- 一個數據表中可以有多個唯一索引;
- 唯一索引可以為空(null);
- 唯一索引的列數據不能重覆。
3. 聯合索引
當一個索引由多個列組成時,稱為聯合索引,主要用於快速查找某一特殊元素,其特點如下:
- 列順序很重要:ABC和CBA是兩類不同的聯合索引;
- 一個數據表中可以有多個聯合索引。
4. 索引對資料庫操作的影響
索引的使用目的是為了加快查找數據的速度。
- 讀(查找數據)
通過檢索索引文件而不是整個資料庫文件,能夠加快讀數據的速度。 - 寫(更新數據、增刪改)
索引文件是獨立於數據文件的,因此在寫數據的時候,需要同時更新索引文件和數據文件,因此會降低寫數據的速度。
5. 其他索引
5.1 普通索引
和一般索引相比,允許列數據重覆,作用是加快數據訪問速度。特點如下:
- 一個數據表中可以有多個唯一索引;
- 普通索引可以為空(null);
- 普通索引的列數據能重覆。
5.2 全文索引
用來加快對大文本數據關鍵字的檢索,MySQL5.6
之後InnoDB也支持該索引。
5.3 首碼索引
僅針對字元串類型的數據,只索引字元串的前幾個字元,而不是整個字元串。因此索引文件更小。
6. 總結
對上述的幾種索引的特點對比如下所示: