关于SQL的执行效率的问题?

rain11er 2002-10-26 04:07:30
关于SQL的执行效率的问题?
SELECT A.ID FROM A,B
WHERE A.ID = B.ID
AND B.NAME LIKE 'AA%'

SELECT A.ID FROM A
WHERE EXISITS(SELECT * FROM B
WHERE A.ID = B.ID
AND B.NAME LIKE 'AA%'
)
执行效率高,
那我想问一下什么时候才用第二种方法,因为
第一种方法完全可以代替第二种方法。
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
developer2002 2003-02-20
  • 打赏
  • 举报
回复
返回记录的多少,由你的where条件决定,你自己判断一下,就知道哪张表返回记录最少了,将其放在from子句的最后,当然了,这种将返回记录最少的表作为驱动表的优化方法只和基于RBO方式的优化模式有关。
beckhambobo 2003-02-20
  • 打赏
  • 举报
回复
当两表没有关联,a表依靠b表记录作条件,这样会用到
SELECT A.ID FROM A
WHERE EXISITS(SELECT * FROM B
WHERE B.NAME LIKE 'AA%')
liujiin 2003-02-20
  • 打赏
  • 举报
回复
什么时返回记录少的表
什么又是记录少的表?
developer2002 2002-10-26
  • 打赏
  • 举报
回复
exists语句可以代替in语句来提高带子查询的查询语句,像你这样的用法大可不必。在两张表做关联时,要将返回记录少的表作为驱动表,即写在from子句的最后,注意,是返回记录少的表,不是记录少的表。
xbin999 2002-10-26
  • 打赏
  • 举报
回复
你把A上的索引drop掉,再试试看。

两个的意思也不太一样吧,第一个可能会出现比B更多的记录数。

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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