美文网首页
记一次Sql性能优化

记一次Sql性能优化

作者: Codmowa | 来源:发表于2020-05-12 21:01 被阅读0次

场景预设

现有 A B 两个表

  • A 代表具体业务表
  • B 中间表, 需要将B表的数据插入到A表
    插入前 需要进行重复性校验.
##原sql 如下
##Col001 是一个不会重复的主键.
## field_1 限制本次要插入的范围
## 如果 field_0 有数据则说明数据重复
select b.field_0 from A  a  left join B b 
on a.Col001 = b.Col001    where and b.field_1 = @Field1 group by field_0

优化思路

  1. 因为数据从B到A , 所以 A 表的数据范围明显大于 B 表, 又因为需要找到二者之间重复的数据, 那么可以用 inner join
  2. 因为只需要Col001 进行 join 所以可以将 A B 两表的字段 into 到临时表
  3. 因为A 表的数据一般都是冷数据, 所以是否脏读 影响不大所以可以开启 with(nolock)

最后的sql 大致如下

select field_0 , Col001 into #temp from A a with(nolock)
select Col001, field_0, Field1 into #tempB from
B  with(nolock) where field_1 = @Field1 
select #temp.field_0 from #temp inner join
#tempB b with(nolock)
on #temp.Col001 =b.Col001 group by #temp.field_0 

最终执行此命令 Col001 12w行的情况下大概在2s 左右出结果,比起完不成还是能接受一点.

总结

工作经验, 不工作哪来的经验~

相关文章

  • 记一次Sql性能优化

    场景预设 现有 A B 两个表 A 代表具体业务表 B 中间表, 需要将B表的数据插入到A表插入前 需要进行重复性...

  • 第一章 SQL性能优化简介

    第一章 SQL性能优化简介 InterSystems SQL支持几个特性来优化InterSystems IRIS®...

  • SQL语句的优化

    SQL语句的优化 如何索取有性能问题SQL的渠道 通过用户反馈获取存在性能问题的SQL 通过慢查日志获取存在性能问...

  • SQL语句的优化

    SQL语句的优化 如何索取有性能问题SQL的渠道 通过用户反馈获取存在性能问题的SQL 通过慢查日志获取存在性能问...

  • 干货系列——SQL语句的优化

    SQL语句的优化 如何索取有性能问题SQL的渠道 通过用户反馈获取存在性能问题的SQL 通过慢查日志获取存在性能问...

  • MySQL之SQL查询优化

    SQL查询优化 获取有性能问题的SQL 通过用户 通过慢查日志获取存在性能问题的SQL 实时获取存在性能问题的SQ...

  • SQL性能优化

    SQL性能优化 一、SQL的执行顺序 顺序:FROM——ON——JOIN——WHERE——GROUP BY——SU...

  • SQL性能优化

    SQL性能优化 一、SQL的执行顺序 顺序:FROM——ON——JOIN——WHERE——GROUP BY——SU...

  • MySQL性能管理及架构设计(三):SQL查询优化、分库分表 -

    一、SQL查询优化(重要) 1.1 获取有性能问题SQL的三种方式 通过用户反馈获取存在性能问题的SQL; 通过慢...

  • SQL查询优化,分库分表

    一、SQL查询优化(重要) 1.1 获取有性能问题SQL的三种方式 通过用户反馈获取存在性能问题的SQL; 通过慢...

网友评论

      本文标题:记一次Sql性能优化

      本文链接:https://www.haomeiwen.com/subject/jzvinhtx.html