MYSQL索引
索引的做用mysql
- 索引相似書籍目錄,查找數據,先查找目錄定位頁碼,翻開頁碼獲取數據
性能影響sql
- 索引能大大減小查詢數據時須要掃描的數據量,提升查詢速度,
- 避免排序和使用臨時表
- 將隨機I/O變順序I/O
- 負面影響,下降寫速度,佔用磁盤
使用場景性能
- 小表,全盤掃描效率更高
- 中大型表,索引做用很大
- 特大型表,創建和使用索引的代價將隨之增大,可採用分區技術
索引類型排序
- 普通索引,最基本索引,無約束
- 惟一索引,具備惟一性約束,
- 主鍵索引,特殊惟一索引.不容許空值,能夠與外鍵構成參照完整性約束
- 組合索引,多列組合在一塊兒建立索引
- 外鍵索引,僅INNODB使用,保證數據的一致性,完整性,實現級聯操做(幾乎不用,由業務邏輯代替了)
- 全文索引,僅MYISAM使用,且只能針對英文
建立原則索引
- 適合索引的列是where和join的on中用到的列
- 索引列的基數越大,效果越好
- 對字符串索引,應該制定一個前綴長度,能夠節省索引空間
- 根據須要建立複合索引
- 避免建立過多索引
- 主鍵儘可能選擇較短的數據類型,減小磁盤佔用,提升查詢效率
注意事項字符串
- 複合索引遵循前綴原則
- like查詢,%不能在前,能夠考慮全文索引
- column is null 可使用索引
- 若是mysql估計使用索引比全表掃描更慢,會棄用索引
- 若是or前的條件中的列有索引,後面的沒有,索引不會被用到
- 列是字符串類型,查詢時須要給值加上引號表明字符串類型,不然索引無效
歡迎關注本站公眾號,獲取更多信息