谁能讲解一下exsit和in执行顺序?

deadshot123 2006-11-17 08:45:24
rt

thanks
...全文
218 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
deadshot123 2006-11-17
  • 打赏
  • 举报
回复
exists

呵呵 写错

两者都逐条判断的吧

exists是判断完再组合记录集

in是先取记录集合,再判断筛选,

为什么速度会比in快

实在想不明白
allright_flash 2006-11-17
  • 打赏
  • 举报
回复
exists:先判断再查询
in:先查询再判断
exists效益高
rea1gz 2006-11-17
  • 打赏
  • 举报
回复
返回记录集需要判断所有记录
逐条判断 本来并不快,但是它可以 在有符合条件的记录就退出
一般情况下,判断所有记录总是比判断部分记录慢些的

exists的效率实际跟子查询的数据也有很大关系
冷箫轻笛 2006-11-17
  • 打赏
  • 举报
回复
那为什么返回记录集会通常比逐条判断还慢呢?
rea1gz 2006-11-17
  • 打赏
  • 举报
回复
所以大部分情况exists比in效率高
rea1gz 2006-11-17
  • 打赏
  • 举报
回复
从表面上来看,exists是逐条判断的,有符合条件就退出;in不是逐条判断的,返回记录集,再判断是否在里面
冷箫轻笛 2006-11-17
  • 打赏
  • 举报
回复
exists ?:)

从表面上来看,这两条语句都是逐条判断的
studenthj 2006-11-17
  • 打赏
  • 举报
回复
USE pubs
GO
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
GO

-- Or, using the IN clause:

USE pubs
GO
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
GO
看看这个例子,就知道了

22,295

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧