1. 程式人生 > 其它 >淺談索引

淺談索引

一.索引的定義
  通俗來說,索引就像一本書的目錄,根據目錄可以快速定位要找到的內容所在頁碼,MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取資料的一種資料結構,而且是排好序的資料結構,索引儲存在磁碟檔案中。

二.索引的分類

   MySQL索引主要是有兩種結構:B+Tree索引和Hash索引,平時我們常說的,如果沒有特別說明的話,一般都是指B+Tree結構的索引。索引都能極大的減少儲存引擎需要掃描的資料量,從而提高資料的檢索速度。

1.Hash索引

  Hash索引的結構和HashMap相類似,鍵值 key 通過 Hash 對映找到桶 bucket。在這裡桶(bucket)指的是一個能儲存一條或多條記錄的儲存單位。一個桶的結構包含了一個記憶體指標陣列,桶中的每行資料都會指向下一行,形成連結串列結構,當遇到 Hash 衝突時,會在桶中進行鍵值的查詢。

 

2.B+Tree索引

  B+樹是B-樹的變體,也是一種多路搜尋樹。

 

 

  • 所有關鍵字都出現在葉子結點的連結串列中(稠密索引),且連結串列中的關鍵字恰好是有序的;
  • 不可能在非葉子結點命中;
  • 非葉子結點相當於是葉子結點的索引(稀疏索引),葉子結點相當於是儲存(關鍵字)資料的資料層;
  • 每一個葉子節點都包含指向下一個葉子節點的指標,從而方便葉子節點的範圍遍歷。
  • 更適合檔案索引系統;

三.索引型別
1.Normal 普通索引
表示普通索引,大多數情況下都可以使用
2.Unique 唯一索引
表示唯一的,不允許重複的索引,如果該欄位資訊不能重複,例如註冊手機號用作索引時,可設定為unique;


Primary Key是擁有自動定義的Unique約束;
3.Full Text 全文索引
表示全文索引,在索引長文字的時候效果較好,比如搜尋一遍文章,在比較短的文字建議使用普通的Index即可;
4.SPATIAL 空間索引
空間索引是對地理空間位置資料型別的欄位建立索引,MYSQL中的地理空間位置資料型別有4種,分別是GEOMETR、POINT、LINESTRING、POLYGON;
四.Navicat新增索引

1.找到需要新增索引的表,右鍵單擊,選擇設計表。

 

 2.進入索引選項頁面

 

 3.根據需求新增索引,填寫索引命名、選擇相對應的欄位、索引型別、索引方法以及添加註釋

 

 

 

 

五.索引命名規範

非唯一索引名idx_xxx,唯一索引名 uniqx_xxx;