当前位置: 首页 > 服务器 > 数据库 > SQL Server > SQL Server用NOT EXISTS或(外连接+判断为空)方案实例

SQL Server用NOT EXISTS或(外连接+判断为空)方案实例

2010-03-05 21:17 来源:互联网 作者:fext 人气指数: 我要评论

  用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。 但是用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:

  SQL试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。 推荐在业务密集的SQL当中尽量不采用IN操作符

  NOT IN 此操作是强列推荐不使用的,因为它不能应用表的索引。推荐用NOT EXISTS 或(外连接+判断为空)方案代替

  在数据库中有两个表,一个是当前表Info(id,PName,remark,impdate,upstate),一个是备份数据表bakInfo(id,PName,remark,impdate,upstate),将当前表数据备份到备份表去,就涉及到not in 和in 操作了:

  首先,添加10万条测试数据

create procedure AddData
as
declare @id int
set @id=0
while(@id<100000)
begin
    insert into dbo.Info(id,PName,remark,impdate,upstate)
    values(@id,convert(varchar,@id)+'0','abc',getdate(),0)
    set @id=@id+1
end

exec AddData

  使用not in 和in操作:

SET STATISTICS TIME ON
GO
--备份数据
insert into bakInfo(id,PName,remark,impdate,upstate)
select id,PName,remark,impdate,upstate from dbo.Info
where id not in(select id from dbo.bakInfo)
GO
SET STATISTICS TIME OFF  此操作执行时间:

SQL Server 分析和编译时间:
   CPU 时间 = 0 毫秒,占用时间 = 3 毫秒。

SQL Server 执行时间:
   CPU 时间 = 453 毫秒,占用时间 = 43045 毫秒。

(100000 行受影响)
SQL Server 分析和编译时间:
   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。


  --更改当前表状态
update  Info set upstate=1 where id in(select id from dbo.bakInfo)
  此操作执行时间:

SQL Server 分析和编译时间:
   CPU 时间 = 62 毫秒,占用时间 = 79 毫秒。

SQL Server 执行时间:
   CPU 时间 = 188 毫秒,占用时间 = 318 毫秒。

(100000 行受影响)
SQL Server 分析和编译时间:
   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

 

  --删除当前表数据
delete from Info where upstate=1 and id in(select id from dbo.bakInfo)
  此操作执行时间:

SQL Server 分析和编译时间:
   CPU 时间 = 183 毫秒,占用时间 = 183 毫秒。

SQL Server 执行时间:
   CPU 时间 = 187 毫秒,占用时间 = 1506 毫秒。

(100000 行受影响)
SQL Server 分析和编译时间:
   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

为您推荐:
大家感兴趣的内容
小伙伴最爱的新闻
小伙伴还关注了以下信息
小伙伴关注的焦点

小伙伴都在关注的热门词

芈月传 老司机玩法 萌乐网 黑科技 坐骑揭秘 三国令 铁血皇城 竞技场攻略 书剑恩仇录 披风玩法 装备强化攻略 野外BOSS玩法 全网曝光 赤壁传说 半回合制国 ACT 哥们网 天书世界 奇珍商城 热血战歌 传奇宝藏抽奖 门徒 范伟打天下 打开方式 门徒获取玩法 三大萌宠简介 新手攻略 挂机系统简介 材料副本 大海战 鸵鸟 大黑 激情玩法 门徒战力提升 万世 强化属性 上古降魔 提升战力 装备攻略 九阴绝学 品质推荐 老干妈 激战来袭 大黑游戏 新服亮点 福利多多 画江山 资料片 玩家 九阴真经 江湖儿女 真实场景 现实 虚拟 随机副本 风色轨迹 听天由命 ppwan 神助攻 武林秘药 激活八大脉门 九天劫变 猎命格 天问 大型PVP 花千骨 激战更尽兴 网易mumu 手游玩家 安卓模拟器 安卓 单挑群战 武侠传说 女神 孙尚香专访 胸猛抱团 新游 占山为王 跨服城战 蜀山战纪 剑雨江湖 攻略 实时VR交互 七大女神代言 酷炫走江湖 世界四大杀手 玩家专访 三国经典 大制作 好玩网页游戏 盘点 宇宙霸主 境界玩法 莽荒纪 勇闯难关 镜像副本 荒漠霸主 装备精通 三大战役 鹌小彦奇谈