软件在研发的过程中自始至终都在留意着系统的可扩展性,但与此同时也在关注着系统的性能,SQL语句作为系统性能的一环不容忽视,从今天开始结合开发的经验,谈一下我对SQL语句优化的理解和认知:
1、在联合查询语句中做到小表驱动大表:
联合查询是常用到的一种查询方式,左连接、右连接、内连接等等时不时地被应用在查询语句中,然而在这一过程中如果能判明各表的数据量,那就再好不过了,在这种情况下from后面应该紧跟数据量小的表,为什么?呵呵呵,比如a表有1000条数据,b表有20条数据,使用左连接进行联合查询如果a表驱动b表,那么b表就要被访问1000次,但如果b表驱动a表,a只要被访问20次,其性能可想而知。
2、不要使用in+子查询
请注意,我这里并没有说不要使用in查询,假如in中的值是给定的,而不是通过select从其它表中查询取得,那么使用in关键字也无可厚非,但是假如in中的数据是通过select从其它表中查询取得的,强烈建议将其改为联合查询的方式,具体方法请参看博客《SQL语句优化——in,not in,exists,not exists, left join...on》.
3、注意where关键字后面查询条件的顺序,将尚未给定值的查询条件放到最后面,将给定的非模糊查询条件放到最前面;
本博客持续更新中,敬请期待。