MySQL使用总结

之前在工作中使用了一年MySQL5.5,总结了几点心得。

  • 在查询条件中用>=替代>,因为>=4和>3,>3可能会读出一些3和4之间的值。
  • 避免在索引列上进行计算,否则将不走索引。
  • 联合索引就像联系人的姓、名,要确定好哪个字段在前哪个字段在后,只有在条件中使用了第一个字段才会激活联合索引,如果后续字段不使用将查找全部索引,除第一个字段外,使用了哪个字段就按照该条件查找索引。比如一个联合索引PK(姓,名),WHERE 姓=’王’时,会激活索引并查询姓为王名为所有的记录。
  • order by使用索引的两个条件:①所有列都包含在相同索引中并且顺序也相同;②所有列都非空。
  • 子查询表大用exists,表小用in,无论子查询表大表小,全用not exists。
  • 优化原则:小表驱动大表,即小的数据集驱动大的数据集。

    //当B表的数据集小于A表的数据集时,用in优于exists
    select * from A where id in (select id from B)
    //当A表的数据集小于B表的数据集时,用exists优于in
    select * from A where exists (select * from B where B.id = A.id)