mysql 索引定義 MySQL 索引詳解

2021-10-18 02:43:47 字數 979 閱讀 4106

普通索引、唯一索引和主索引

1. 普通索引

普通索引(由關鍵字key或index定義的索引)的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件(where column = …)或排序條件(order by column)中的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊、最緊湊的資料列(如乙個整數型別的資料列)來建立索引。

2. 唯一索引

普通索引允許被索引的資料列包含重複的值。比如說,因為人有可能同名,所以同乙個姓名在同乙個」員工個人資料」資料表裡可能出現兩次或更多次。

如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字unique把它定義為乙個唯一索引。這麼做的好處:一是簡化了mysql對這個索引的管理工作,這個索引也因此而變得更有效率;二是mysql會在有新記錄插入資料表時,自動檢查新記錄的這個欄位的值是否已經在某個記錄的這個欄位裡出現過了;如果是,mysql將拒絕插入那條新記錄。也就是說,唯一索引可以保證資料記錄的唯一性。事實上,在許多場合,人們建立唯一索引的目的往往不是為了提高訪問速度,而只是為了避免資料出現重複。

3. 主索引

在前面已經反覆多次強調過:必須為主鍵欄位建立乙個索引,這個索引就是所謂的」主索引」。主索引與唯一索引的唯一區別是:前者在定義時使用的關鍵字是primary而不是unique。

4. 外來鍵索引

如果為某個外來鍵字段定義了乙個外來鍵約束條件,mysql就會定義乙個內部索引來幫助自己以最有效率的方式去管理和使用外來鍵約束條件。

5. 復合索引

索引可以覆蓋多個資料列,如像index(columna, columnb)索引。這種索引的特點是mysql可以有選擇地使用乙個這樣的索引。如果查詢操作只需要用到columna資料列上的乙個索引,就可以使用復合索引index(columna, columnb)。不過,這種用法僅適用於在復合索引中排列在前的資料列組合。比如說,index(a, b, c)可以當做a或(a, b)的索引來使用,但不能當做b、c或(b, c)的索引來使用。

mysql 雜湊索引 MySQL索引之雜湊索引

雜湊索引 hash index 建立在雜湊表的基礎上,它只對使用了索引中的每一列的精確查詢有用。對於每一行,儲存引擎計算出了被索引的雜湊碼 hash code 它是乙個較小的值,並且有可能和其他行的雜湊碼不同。它把雜湊碼儲存在索引中,並且儲存了乙個指向雜湊表中的每一行的指標。在mysql中,只有me...

mysql主鍵索引 MySQL索引之主鍵索引

在mysql裡,主鍵索引和輔助索引分別是什麼意思,有什麼區別?上次的分享我們介紹了聚集索引和非聚集索引的區別,本次我們繼續介紹主鍵索引和輔助索引的區別。1 主鍵索引 主鍵索引,簡稱主鍵,原文是primary key,由乙個或多個列組成,用於唯一性標識資料表中的某一條記錄。乙個表可以沒有主鍵,但最多只...

mysql聚集索引 MySQL索引之聚集索引介紹

在mysql裡,聚集索引和非聚集索引分別是什麼意思,有什麼區別?在mysql中,innodb引擎表是 聚集 索引組織表 clustered index organize table 而myisam引擎表則是堆組織表 heap organize table 也有人把聚集索引稱為聚簇索引。當然了,聚集索...