Mysql學習筆記:索引
05-13
定義:索引是一個單獨的、存儲在磁碟上的資料庫結構,它們包含著對數據表裡所有記錄的引用指針。索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引用於快速找出在某個或多個列中有一特定值的行,可提高資料庫中特定數據的查詢速度。
打個比方:當要去圖書館找一本名叫《資料庫應用與設計》的書,可以先在檢索機上輸入得到它的一個索引號,然後去到特定的樓層,書架,幾排幾列,就能快速找出此書,而不用從一樓第一個書架開始找到八樓的最後一個書架。這就是定義索引的優點(但也有缺點)。
優點
- 通過創建唯一索引,可以保證資料庫表中每一行數據的唯一性;
- 可以大大加快數據的查詢速度,這也是創建索引的最主要的原因;
- 在實現數據的參考完整性方面,可以加速表和表之間的連接;
- 在使用分組和排序子句進行數據查詢時,也可以顯著減少查詢中分組和排序的時間。
缺點
- 創建索引和維護索引要耗費時間,並且隨著數據量的增加所耗費的時間也會增加;
- 索引需要佔磁碟空間,除了數據表占數據空間之外,每一個索引還要佔一定的物理空間,如果有大量的索引,索引未見可能比數據文件更快達到最大文件尺寸;
- 當對表中的數據進行增加、刪除和修改的時候,索引也要動態地維護,這樣就降低了數據的維護速度。
類型:普通索引、唯一索引、單列索引、組合索引、全文索引、空間索引。
推薦閱讀:
※資料庫管理系統(一): 並發控制簡介
※演講實錄:「分散式資料庫海量數據存儲和實時查詢實現與應用」
※「魔鬼」撒旦(Satan)利用「永恆之藍」漏洞捲土重來 主攻資料庫
※MySQL資料庫應用(十一)—MySQL資料庫函數的操作(1):數學函數
※傳統關係資料庫高可用的缺失