前言
存儲引擎是數據庫的核心,經常使用的MySQL存儲引擎有InnoDB,MyISAM,memory.索引是加速數據的查詢的一種數據結構.數據庫
1. 索引簡介
1.1 索引優勢
- 查詢數據塊
- 數據惟一性
- 加速表之間的鏈接
1.2 索引缺點
- 索引會佔用存儲空間,可能比自己的表數據還大
- 只對查有利,增長了增刪改的負擔
1.3 使用索引的注意事項
- 字段值差異大的數據使用索引(性別列就不要用索引了)
- 字符字段能夠只選取字段的前幾位字符創建索引,能簡少存儲數據.
2.兩個重要存儲引擎InnoDB和MyISAM
2.1 InnoDB
2.1.1 特色
- 支持事務
- 處理數據量巨大
- 表數據和索引分開存儲
- 支持行級鎖定
- 缺省 6B長度主鍵
- 主鍵自己就是索引,其索引映射的不是地址,而是主鍵,從而找到行記錄
2.1.2 InnoDB索引
只支持B+樹數據結構
2.2 MyISAM
2.2.1 特色
- 不支持事務
- 插入和查找極快
- 不支持事務
- 單純增查數據的首選
2.2.2 MyISAM索引
只支持B+樹設計
2.2.3 memory索引
支持 B+樹和HASH
MySQL數據庫通常默認innoDB存儲引擎.索引
3. 索引的分類
- 普通索引和惟一索引
- 單列索引和組合索引(組合索引:最左匹配才能使用)
- 全文索引:建立分詞,爲每一個分詞映射地址,從而經過找到索引中的分詞而找到數據的地址.
- 空間索引
4. 索引設計原則
- 並不是越多越好.
- 避免對常常更新的表創建過多索引.
- 數據量小的表不使用索引.
- 索引應該創建在值差別較大的列上.
- 頻繁分組操做表上創建組合索引.
- 儘可能使用短索引,節省磁盤空間.