Mysql學習筆記:索引

定義:索引是一個單獨的、存儲在磁碟上的資料庫結構,它們包含著對數據表裡所有記錄的引用指針。索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引用於快速找出在某個或多個列中有一特定值的行,可提高資料庫中特定數據的查詢速度。

打個比方:當要去圖書館找一本名叫《資料庫應用與設計》的書,可以先在檢索機上輸入得到它的一個索引號,然後去到特定的樓層,書架,幾排幾列,就能快速找出此書,而不用從一樓第一個書架開始找到八樓的最後一個書架。這就是定義索引的優點(但也有缺點)。

優點

  1. 通過創建唯一索引,可以保證資料庫表中每一行數據的唯一性;
  2. 可以大大加快數據的查詢速度,這也是創建索引的最主要的原因;
  3. 在實現數據的參考完整性方面,可以加速表和表之間的連接;
  4. 在使用分組和排序子句進行數據查詢時,也可以顯著減少查詢中分組和排序的時間。

缺點

  1. 創建索引和維護索引要耗費時間,並且隨著數據量的增加所耗費的時間也會增加;
  2. 索引需要佔磁碟空間,除了數據表占數據空間之外,每一個索引還要佔一定的物理空間,如果有大量的索引,索引未見可能比數據文件更快達到最大文件尺寸;
  3. 當對表中的數據進行增加、刪除和修改的時候,索引也要動態地維護,這樣就降低了數據的維護速度。

類型:普通索引、唯一索引、單列索引、組合索引、全文索引、空間索引。

推薦閱讀:

資料庫管理系統(一): 並發控制簡介
演講實錄:「分散式資料庫海量數據存儲和實時查詢實現與應用」
「魔鬼」撒旦(Satan)利用「永恆之藍」漏洞捲土重來 主攻資料庫
MySQL資料庫應用(十一)—MySQL資料庫函數的操作(1):數學函數
傳統關係資料庫高可用的缺失

TAG:MySQL | 資料庫 | SQL |