• group by可以走索引,但是所有group by列需要引用同一索引的属性,并且顺序正确.
  • order by可以走索引,但是order by的字段必须包含在where子句使用的索引中.
  • group by与order by走索引的机制是相同的.where走索引group by才能走索引,并且走的同一个索引.
  • like可以走索引,但是模糊查询不能以%开头
  • in与exist: in是子查询,当子查询表较大时效率会低,子查询返回的是数据集;可以用exists替代
    • exists返回的是一个布尔值,当外层表较大时效率会低;
    • not exists永远比not in效率高
  • exists和in都走索引,主查询和子查询都可以走索引,而且相互独立
  • b+索引使用不等于(!=或者<>)时无法使用索引(误
  • is null,is not null无法使用索引(误)
  • 上述两条是否走索引由mysql优化器自己判断,如果数据比较均匀的话有可能索引失效
  • 字符串不加单引号,该字段以后的索引会失效
  • or会使索引失效