A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王海亮 中级黑马   /  2012-8-20 18:05  /  1951 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在SQL中跨表查询数据的时候是  表连接查询 和  子查询  那个更快效率最高?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

2 个回复

倒序浏览
这个一般在实际生成环境中看。能用join尽量用。
回复 使用道具 举报
要查询笔试过60分的学员
表连接的方式:SELECT stuName FROM stuInfo  
INNER JOIN   stuMarks  ON  stuInfo.stuNo=stuMarks.stuNo
WHERE writtenExam=60

子查询的方式:SELECT stuName FROM stuInfo where stuno =
(SELECT stuNO FROM  stuMarks WHERE writtenExam=60)
GO

一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换
子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
子查询不能使用ORDER BY子句

表连接更适合于查看多表的数据

表中有无索引,环境的不同等等都会对查询的结果造成影响,没有明确的一定孰优孰劣。事实上一般情况下2者的效率差不多。
不过一般的默认规则是,能用表连接的话尽量用表连接代替子查询,尤其是多表查询的时候。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马