让你的sql开启氮气加速
事情的过程是:公司有一个上百行的sql 运行在MySQL数据库,速度奇慢无比,逻辑乱七八糟,我就不贴出来了,经过这次修改想总结一下如何写一个不被人骂的sql。 说一些被人诟病的问题: 一、子查询 把你的子查询全部改为 join!!! 把你的子查询全部改为 join!!! 把你的子查询全部改为 join!!! 不要搞子查询,因为子查询的速度真的很慢。 把你用到的表先准备出来,找好关联关系做成 left join 或者 inner join 别问我为什么不用 right join mysql里面没有啊~ 二、没索引 几个必须加索引的地方: 1.主键自动建立唯一索引 2. 频繁作为where条件语句查询的字段 3. 关联字段需要建立索引,比如join表 on的字段 4. 排序字段可以建立索引 5. 分组字段可以建立索引,因为分组的前提是排序 6. 统计字段,聚合函数 可以建立索引,例如count(),max() 当然索引也不是哪都合适的: 1.频繁更新的字段不适合建立索引 2.where条件中用不到的字段不适合建立索引 3.表数据可以确定比较少的不需要建索引 少于1000条 4.数据重复且发布比较均匀的的字段不适合建索引(唯一性太差的字段不适合建立索引),例如性别,状态 5. 参与列计算的列不适合建索引 索引什么时候会失效