MYSQL索引

索引的做用mysql

  • 索引相似書籍目錄,查找數據,先查找目錄定位頁碼,翻開頁碼獲取數據

性能影響sql

  • 索引能大大減小查詢數據時須要掃描的數據量,提升查詢速度,
  • 避免排序和使用臨時表
  • 將隨機I/O變順序I/O
  • 負面影響,下降寫速度,佔用磁盤

使用場景性能

  • 小表,全盤掃描效率更高
  • 中大型表,索引做用很大
  • 特大型表,創建和使用索引的代價將隨之增大,可採用分區技術

索引類型排序

  • 普通索引,最基本索引,無約束
  • 惟一索引,具備惟一性約束,
  • 主鍵索引,特殊惟一索引.不容許空值,能夠與外鍵構成參照完整性約束
  • 組合索引,多列組合在一塊兒建立索引
  • 外鍵索引,僅INNODB使用,保證數據的一致性,完整性,實現級聯操做(幾乎不用,由業務邏輯代替了)
  • 全文索引,僅MYISAM使用,且只能針對英文

建立原則索引

  • 適合索引的列是where和join的on中用到的列
  • 索引列的基數越大,效果越好
  • 對字符串索引,應該制定一個前綴長度,能夠節省索引空間
  • 根據須要建立複合索引
  • 避免建立過多索引
  • 主鍵儘可能選擇較短的數據類型,減小磁盤佔用,提升查詢效率

注意事項字符串

  • 複合索引遵循前綴原則
  •  like查詢,%不能在前,能夠考慮全文索引
  • column is null 可使用索引
  • 若是mysql估計使用索引比全表掃描更慢,會棄用索引
  • 若是or前的條件中的列有索引,後面的沒有,索引不會被用到
  • 列是字符串類型,查詢時須要給值加上引號表明字符串類型,不然索引無效
相關文章
相關標籤/搜索