手机版
你好,游客 登录 注册
背景:
阅读新闻

【sql】sql查询is not null速度慢的一种处理方式

[日期:2019-01-21 12:09:14] 来源:linux公社   作者:linux公社 [字体: ]

数据库连表查询中的nvarchar类型字段,tb_Users.Certificates is not null条件,is not null 会导致查询速度慢很多(因为和“=”号条件遍历方式不一样)。

替换为 “LEN(tb_Users.Certificates) >0”,利用 Users.Certificates为空时整个计算返回false,达到筛选效果。有其他更好的处理方式,有兴趣可以留言讨论一下。

当然,datetime类型也是可以用这个方式的:

declare @test datetimeset @test=getdate()if(LEN(@test) >0)beginprint 'true'endelsebeginprint 'false'end

结果为true.

declare @test datetimeset @test=nullif(LEN(@test) >0)beginprint 'true'endelsebeginprint 'false'end

结果为false.

原因:

使用LEN(tb_Users.Certificates) >0只有一个物理查找执行:

用is not null 多了物理扫描,物理查找执行次数也多了好多倍

Linux公社的RSS地址http://www.it56.cn/rss.xml

本文永久更新链接地址www.it56.cn/MySql/9151.html

linux