什麼是索引?
- 索引(Index)是幫助MySql高效獲取數據的數據結構。
優勢
- 提高數據檢索的效率,降低數據庫的IO成本
- 通過索引對數據進行排序,降低數據排序的成本,降低了CPU 的消耗
劣勢
- 雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如INSERT,UPDATE和DELETE。因爲更新表的時候,Mysql不僅要保存數據,還要保存索引文件每次更新添加了索引的字段,都會調整因爲更新所帶來的鍵值變化後的索引信息
- 索引也是一張表,該表保存了主鍵與索引字段,並指向實體表的記錄,所以索引列也是要佔用空間的。
哪些情況需要創建索引?
- 主鍵自動建立唯一索引
- 頻繁作爲查詢條件的字段應該創建索引
- 查詢中與其他表關聯的字段,外鍵關係建立索引
- 單鍵/組合索引的選擇問題,組合索引性價比更高
- 查詢中排序的字段,排序字段若通過索引去訪問將大大提高排序速度
- 查詢中統計或者分組字段
哪些情況不要創建索引?
- 表記錄太少
- 經常增刪改查的表或者字段
- 過濾性不好的不適合建索引
- Where條件裏用不到的字段不創建索引