關系型數據庫---MySQL---索引
1、索引是一種特殊的文件,包含著對數據表中所有記錄的引用指針;
2、特點:
1.1 優勢:加快數據檢索操作;
1.2 劣勢:
1.1.1 數據修改操作變慢,因為每修改一次數據記錄,索引必須刷新一次;
1.1.2 為了彌補這一缺陷,許多SQL命令都有一個DELAY_KEY_WRITE選項,不需要每次修改數據都刷新索引,等待全部數據插入/修改完成後再更新索引;
1.1.3 占用硬盤空間;
3、InnoDB數據表的索引:
1.1 在InnoDB數據表上,索引不僅會在搜索數據記錄時發揮作用,還是數據行級鎖定機制的基礎;
【數據行級鎖定機制】:在事務操作的執行過程中鎖定正在被處理的個別記錄,不讓其他用戶進行訪問;
1.2 出於效率方面的考慮,InnoDB的數據行級鎖定機制實際發生在索引上,而不是數據表自身上;
1.3 【限制】:
1.1.1 如果where子句中出現!=,將無法使用索引;
1.1.2 如果where子句中出現函數,將無法使用索引;
1.1.3 如果where子句中使用了like操作符,只有‘abc%‘才會使用索引;‘%abc%‘將無法使用索引;
1.1.4 order by操作時,只有order by後不是一個查詢條件表達式時才會使用索引;
4、索引分類:
1.1 普通索引:
1.1.1 由關鍵字key或者index定義的索引;
1.1.2 作用:加快對數據的檢索速度;
1.1.3 該數據列可以包含相同的值;
1.2 唯一索引:
1.1.1 如果確定某個數據列包含不同的值,創建時應建為唯一索引;
1.3 主索引:
即為主鍵創建的主鍵索引;
1.4 復合索引:
1.5 全文索引:(FULLTEXT())
1.1.1 文本字段上的普通索引只能加快對出現在字段內容最前面的字符串進行檢索
1.1.2 InnoDB數據表不支持全文索引;
關系型數據庫---MySQL---索引