1.提升數據檢索效率,下降數據庫I/O成本
2.經過索引列對數據排序,下降數據排序成本,即下降CPU消耗
我目前的項目中,就常常出現cpu高達90%+的狀況,經過優化sql,能夠適當下降cpu資源消耗狀況,更多的從業務代碼層面優化。mysql
1.索引自己也是一張表,該表保存了主鍵與索引列字段,並指向實體表記錄。所以索引也是要佔用磁盤空間的
2.下降更新表的速度,當對錶進行insert、update、delete時,mysql不只要更新業務表數據,還須要保存一下索引文件。每次更新添加索引列字段,都會調整索引信息,若是表數據特別大時(100w+),都須要花費長達幾分鐘的時間----本身親自在線上環境驗證,我遇到的狀況大約是5分鐘左右。sql
1.單值索引:即一個索引只包含一個列,一個表能夠有多個單列索引
2.惟一索引:索引列的值必須惟一,容許爲空值。建立惟一索引的主要目的不是爲了提升訪問速度,而是爲了不數據重複。
3.複合索引:即一個索引包含多個列數據庫