建索引的幾大原則
1.最左前綴匹配原則,mysql會一直向右匹配直到遇到範圍查詢(>、<、between、like)就中止匹配。html
2.=和in能夠亂序,好比a = 1 and b = 2 and c = 3 創建(a,b,c)索引能夠任意順序,mysql的查詢優化器會幫你優化成索引能夠識別的形式mysql
3.儘可能選擇區分度高的列做爲索引,count(distinct col)/count(*),通常須要join的字段咱們都要求是0.1以上,即平均1條掃描10條記錄sql
4.索引列不能參與計算;優化
5.儘可能的擴展索引,不要新建索引。好比表中已經有a的索引,如今要加(a,b)的索引,那麼只須要修改原來的索引便可spa
慢查詢優化基本步驟
0.先運行看看是否真的很慢,注意設置SQL_NO_CACHE.net
1.where條件單表查,鎖定最小返回記錄表。這句話的意思是把查詢語句的where都應用到表中返回的記錄數最小的表開始查起,單表每一個字段分別查詢,看哪一個字段的區分度最高htm
2.explain查看執行計劃,是否與1預期一致(從鎖定記錄較少的表開始查詢)blog
3.order by limit 形式的sql語句讓排序的表優先查排序
4.瞭解業務方使用場景索引
5.加索引時參照建索引的幾大原則
6.觀察結果,不符合預期繼續從0分析
MySQL索引原理及慢查詢優化:https://tech.meituan.com/mysql-index.html