通常來講,SQL語句where選擇條件下有兩種狀況,1,、等值查詢,二、範圍查詢。排序
基本原則,不要有兩個及以上的範圍查詢,若是有肯定範圍能夠用in ()來替代。索引
InnoDB的任何二級索引會自帶主鍵索引,因此主鍵索引不用寫進聯合索引中。ci
已經建了一個比較全的聯合索引時,爲避免重複建索引,SQL where語句中能夠帶入索引中有的字段,好比索引爲(sex,country,region,city,age),當你的查詢時不是全部字段都要where檢索,假如region不須要檢索,要用到該索引,你可能要加上region in (全部區域)。it
範圍查詢的字段,放在聯合索引的最後,只能有一個。io
索引中的字段在select中和where中都生效。select
另外,用explain+SQL語句\G能夠看到不少有用的信息,好比是全表掃描仍是經過索引。方法
查詢出上百萬行數據的排序,order by後面的字段放在索引中,這個沒什麼好說的,並且該字段最好出如今where語句中,方法同上。數據