sql 优化

  1. 避免使用**select ***
  2. .用 union all 代替 union
    union去重去重过程需要遍历排序比较,更消耗cpu资源
    确定唯一没有重复数据能用union all尽量用
  3. 如果主查询的数据集大,则使用in关键字,效率高。如果子查询的数据集大,则使用exist关键字,效率高。
  4. 尽量少用or (mysql优化器对or没有太好的优化,可以使用INunionunion all 代替or)
  5. 批量插入
  6. 尽量用 join 代替子查询
    (相比于子查询join的性能要好一些,虽然 Join 性能并不佳,但是和 MySQL 的子查询比起来还是有非常大的性能优势。)。
  7. where字句替换HAVING字句
    避免使用HAVING字句,因为HAVING只会在检索出所有记录之后才对结果集进行过滤,而where则是在聚合前刷选记录,如果能通过where字句限制记录的数目,那就能减少这方面的开销。
  8. count(1)count(primary_key) 优于 count(*)
  9. 多表关联查询时,小表在前大表在后
    (在MySQL中,执行 from 后的表关联查询是从左往右执行的(Oracle相反),第一张表会涉及到全表扫描,所以将小表放在前面,先扫小表,扫描效率较,在扫描后面的大表,或许只扫描大表的前100行就符合返回条件并return了。)
  10. 调整Where字句中的连接顺序
    (MySQL采用从左往右自上而下的顺序解析where子句。根据这个原理,应将过滤数据多的条件往前放最快速度缩小结果集。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值