Sql语句的优化以及Sql语句优化工具

这周在做项目的时候,发现有些Sql语句写的复杂,一个复杂的Sql语句不仅性能比较低下,当涉及到重构的时候也是不容易理解和读懂的,并且一个复杂的sql语句会显著增加程序的耦合度,所以Sql语句的优化就显的很必要了。

Sql语句复杂化的原因

首先列举一下Sql语句复杂化的原因:

  1. 将业务逻辑由Sql语句实现
  2. 数据库表的设计不符合第三范式
  3. Sql语句中含有大量冗余的不必要逻辑
  4. 没有很好的利用视图

如何优化Sql语句呢

  1. 不要超过5个表以上的连接
    超过5张表以上的连接会大大增加sql引擎的消耗。

  2. 考虑使用临时表或表变量存放中间结果
    这样做可以使得代码逻辑更加清晰

  3. 少用子查询

  4. 善用视图,但应该注意视图嵌套不要过深

  5. 可以使用order by limit组合,同时在order by 后面使用索引,效率更高。

  6. 少使用select * 进行全表查询
    减少工作量的一个简单方法是限制每个这个查询所检索出来的信息,select * 会检索存储在数据库表中的所有可用信息。对于具有多个字段和行的大型表,使用SELECT*语句可能会检索大量不必要的数据,导致大量的资源消耗殆尽。

  7. 避免使用select distinct语句
    虽然我们一般都使用select distinct 去删除重复数据,但它降低了sql的运行和处理能力。为了避免降低查询的性能,可以选择更多字段来生成唯一的结果。

  8. 不要使用have 去过滤数据,而是应该使用where 去过滤数据
    sql调优的主要目标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值