1. 程式人生 > >PHP------MySQL索引常用總結

PHP------MySQL索引常用總結

MySQL索引:

索引就像書的目錄,能更快的找到內容,但是目錄也會佔用紙張,而索引會佔用磁碟空間。

索引結構 B+樹

B+樹是MySQL使用最頻繁的一個索引資料結構,資料結構一平衡樹的形式來組織。適合處理排序、範圍查詢等功能。相對hash索引,B+樹查詢單條資料的速度較慢,但是更適合排序等操作,所以使用更廣泛。

索引結構 Hash

Hash在MySQL裡面比較少見,把資料的索引以hash的形式組織起來,當查詢一條資料,速度非常快,當時hash結構,一個鍵對應一個值,而且是雜湊分佈,不方便進行範圍查詢和排序等功能。

MySQL常用索引

  1. 主鍵索引:特殊的唯一索引,不允許有空值
  2. 唯一索引:與“普通索引”類似,不同就是:索引值必須唯一,但是允許有空值。
  3. 普通索引:基本的索引,沒有限制
  4. 全文索引:僅用於MyISAM表,對較大資料,生成全文索引很耗時、耗空間
  5. 組合索引:遵循“最左字首”原則

在這裡插入圖片描述 在這裡插入圖片描述

聚集索引(主鍵索引)

innodb儲存引擎是索引組織表,表中的資料按照主鍵順序存放。而聚集索引就是按照每張表的主鍵構造一顆B+樹,同時葉子節點中存放的即為整張表的記錄資料。

輔助索引(二級索引)

非主鍵索引 葉子節點 = 鍵值 + 書籤。innodb儲存引擎的書籤就是相應行資料的主鍵索引值。

覆蓋索引

如果查詢的列恰好是索引的一部分,查詢只需要在索引檔案上進行,不需要到磁碟中查詢資料。不是索引的一部分,就要到磁碟中查詢資料。 使用explain,輸出的extra列判斷。索引覆蓋查詢,顯示為using index

,MySQL查詢優化器執行查詢前也會判斷是否有索引覆蓋查詢。