欢迎来到小懒的博客~email:568705236@qq.com

sql server的批量更新和字符串关联加索引

2022/3/19 17:42:01站长

不学无术的我,又来记录下只言片语,知识不够,一直只能搬砖。

这次就遇到有点棘手的砖了,是一个报表,设计5、6个表左右。这次因实现需求,百度到的知识点如下,纯CV稍微修改,毫无理论支撑,阅读请谨慎,莫要被我误导:

update tableA set column1=t.val 
from (
    select s.key,s.val
    from (
        values(1,2),(2,3),(3,4)
    ) s (key,val)
) t 
where tableA.column2=t.key
-----------------------------------------
update tableA set column1=t.val 
from (
    select 
    case when c.mode=1 then b.num*100-335
    else (b.num-200*1.2) end as val,
    b.key
    from tableB b 
    inner join tableC c on b.cid=c.id 
) t 
where tableA.column2=t.key

以上两个都是批量更新的语句,第一个是更新来源非表格中的数据,第二个是更新来源是表格中的数据。都是根据每行记录的情况来更新不同的值,不像以前的基础更新语句

update tableA set column1=2 where key='a';

然后就是下一个,正常人都会的索引,献丑了。

在我写的混乱的sql中,出现一处子查询连表,是用字符串匹配的,两边才各1万条数据,却耗时10秒,看了下,逻辑扫描百万次。

我只能将两边的子查询都提前,插入临时表,给两个临时表都加上关联字段的索引,逻辑扫描剩两万次了。

大家千万不要学我这样不学无术,工作多年,得过且过,原地踏步。要不断学习充实自我,不然像我这样,写个小数据的连表sql都能这么慢,真是笑死人了。

赞赏