MySQL 的索引有兩種分類方式:邏輯分類和物理分類。 按照邏輯分類,索引可分為:
- 主鍵索引:一張表只能有一個主鍵索引,不允許重復、不允許為 NULL;
- 唯一索引:數據列不允許重復,允許為 NULL 值,一張表可有多個唯一索引,但是一個唯一索引只能包含一列,比如身份證號碼、卡號等都可以作為唯一索引;
- 普通索引:一張表可以創建多個普通索引,一個普通索引可以包含多個字段,允許數據重復,允許 NULL 值插入;
- 全文索引:讓搜索關鍵詞更高效的一種索引。
按照物理分類,索引可分為:
- 聚集索引:一般是表中的主鍵索引,如果表中沒有顯示指定主鍵,則會選擇表中的第一個不允許為 NULL 的唯一索引,如果還是沒有的話,就采用 Innodb 存儲引擎為每行數據內置的 6 字節 ROWID 作為聚集索引。每張表只有一個聚集索引,因為聚集索引的鍵值的邏輯順序決定了表中相應行的物理順序。聚集索引在精確查找和范圍查找方面有良好的性能表現(相比於普通索引和全表掃描),聚集索引就顯得彌足珍貴,聚集索引選擇還是要慎重的(一般不會讓沒有語義的自增 id 充當聚集索引);
- 非聚集索引:該索引中索引的邏輯順序與磁盤上行的物理存儲順序不同(非主鍵的那一列),一個表中可以擁有多個非聚集索引。
這是我面過最簡單的了 真是太難為人了!!