程序员对SQL性能的追求

1、查询SQL尽量不要使用select *,而是select具体字段,尽可能避免回表。

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

3、应尽量避免在where子句中使用or来连接条件,因为会放弃索引

4、优化limit分页,当偏移量特别大时,跳过偏移量,查询效率大大提高。

5、优化你的like语句,把%放前面是不走索引的

6、使用where条件限定要查询某个记录的数据,避免返回多余的行

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

8、应尽量避免在where子句中对字段进行表达式操作,这将导致系统放弃使用索引而进行全表扫

9、Inner join 、left join、right join,优先使用Inner join,如果是left join,左边表结果尽量小

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

11、使用联合索引时,注意索引列的顺序,一般遵循最左匹配原则。

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

13、如果插入数据过多,考虑批量插入。

14、在适当的时候,使用覆盖索引。

15、慎用distinct关键字,字段很多的时候使用,会大大降低查询效率。

16、删除冗余和重复索引

17、如果数据量较大,优化你的修改/删除语句。

18、where子句中考虑使用默认值代替null。

19、不要有超过5个以上的表连接

20、exist&in的合理利用,选择最外层循环小的

21、尽量用union all替换 union

22、索引不宜太多,一般5个以内。

23、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型

24、索引不适合建在有大量重复数据的字段上,如性别这类型数据库字

25、尽量避免向客户端返回过多数据量。

26、当在SQL语句中连接多个表时,请使用表的别名,并把别名前缀于每一列上,这样语义更加清晰。

27、尽可能使用varchar/nvarchar 代替 char/nchar。

28、为了提高group by 语句的效率,可以在执行到该语句前,把不需要的记录过滤掉。

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

30、多多使用explain 分析你的SQL语句

如有疑问或不同见解,欢迎留言共同交流,博主看到后会在第一时间回复哦…

猜你喜欢

转载自blog.csdn.net/mrhs_dhls/article/details/105991587
今日推荐