通常来讲,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语句中,方法同上。数据