书写高质量SQL的30条建议

1、查询SQL尽量不要使用select *,而是select具体字段。

2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit

3、应尽量避免在where子句中使用or来连接条件(使用or可能会使索引失效,从而全表扫描。)

4、尽量避免在索引列上使用mysql的内置函数

5,应尽量避免在 where 子句中对字段进行表达式操作,这将导致系统放弃使用索引而进行全表扫(select * from user where age-1 =10;)

6,应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

7,对查询进行优化,应考虑在 where 及 order by 涉及的列上建立索引,尽量避免全表扫描。

8,删除冗余和重复索引

9,尽量用 union all 替换 union(如果使用union,不管检索结果有没有重复,都会尝试进行合并,然后在输出最终结果前进行排序。如果已知检索结果没有重复记录,使用union all 代替union,这样会提高效率。)

10,索引不宜太多,一般5个以内(降低了插入和更新的效率)

11,尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型(字符型会降低查询和连接的性能,并会增加存储开销。)

12,索引不适合建在有大量重复数据的字段上,如性别这类型数据库字段。(Mysql查询优化器推算发现不走索引的成本更低)

13,如何字段类型是字符串,where时一定用引号括起来,否则索引失效

 

posted @ 2020-09-04 23:12  小--z  阅读(274)  评论(0)    收藏  举报