SQLSERVER EXISTS IN 优化

 

 

 

数据量:

SQLSERVER EXISTS IN 优化

 

首先我们看看待优化的SQL:

SQLSERVER EXISTS IN 优化

简单的分析下来发现:

SQLSERVER EXISTS IN 优化

EXISTS 这部分执行比较慢,我们来看一下,

SQLSERVER EXISTS IN 优化

这种写法比较便于理解,但是执行起来却很慢。既然这里慢,我们就要优化这部分。

首先我是想把拼接的字段进行单条拆多条,开始的想法:

SQLSERVER EXISTS IN 优化

拆分后的第一个sql:

SQLSERVER EXISTS IN 优化

这个部分其实从开始就不是慢的原因,所以看第二个部分:

SQLSERVER EXISTS IN 优化

看一下效果,其实效果并不好。

后面请教了一下同事,一些什么缓存表啊啥的,都简单的测试过,其实并不适合。

后来同事指导下用了关联表如下:

SQLSERVER EXISTS IN 优化

第一版是以前用了关联(WS_INST_STEP),后面根据需求,我把关联表部分去掉了。单独执行的化两个速度看不出来,我们放到整体sql中测试一下:

SQLSERVER EXISTS IN 优化

 

SQLSERVER EXISTS IN 优化

 

 

 效果其实都还可以,宏观上相差1s。