项目中sql优化是提高项目执行效率的有效方式之一。如果你是程序员,使用好的sql不仅使得项目执行效率的提升,更是一个人技术能力的体现;如果你是项目管理者,检查程序员的sql是否是一个优质的sql至关重要,那么sql到底如何优化呢?


    SQL优化方案:

1. sql中索引的使用技巧:

  (1) 对于多列索引(复合索引),sql查询条件只有使用了最左边的列,索引才会生效。

wKiom1fejXDRyaRKAAHHIG1V4jk970.png

   

   (2) 对于like模糊查询,模糊匹配的字符串最前面禁止使用%、_等模糊匹配器的字符,否则索引将失效,如果最前面必须要用到模糊匹配,建议一般采用全文索引技术(sphinx(coresseek))。

    

   (3) sql条件中有or关键字,or两边的条件必须都为索引(如果是组合索引,必须是第一个),否则索引全部无效。一般情况,能避免关键字or,就尽量避免使用。

wKioL1fejnjj5N4PAADW9BgObDQ225.png

  

   (4) sql条件中如果有字段是字符串类型的字段,一定要用单引号或双引号引起来,否则索引无效。

wKiom1fejzCxJ5sqAAGpAbwbnc0871.png


2. group by使用优化:

  在使用 group by 分组查询时,默认分组后还会自动排序,从而可能降低查询效率。

优化 : group by后面添加order by null。


wKioL1fekCSDrUNvAAE2cxQJra8800.png



3.连接代替子查询和关联查询:

一般情况下,用连接(join)代替子查询和关联查询,因为使用join, mysql不需要在内存中创建临时表。

   SELECT * FROM tb_user_goods g,tb_shop s WHERE g.fk_shop_id=s.id;(普通)  

      SELECT * FROM tb_user_goods g INNER JOIN tb_shop s ON g.fk_shop_id=s.id;(更优)