黑马程序员技术交流社区

标题: 关于SQL查询! [打印本页]

作者: 王海亮    时间: 2012-8-20 18:05
标题: 关于SQL查询!
在SQL中跨表查询数据的时候是  表连接查询 和  子查询  那个更快效率最高?


作者: 张文    时间: 2012-8-20 18:55
这个一般在实际生成环境中看。能用join尽量用。
作者: 金鑫    时间: 2012-8-20 22:42
要查询笔试过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者的效率差不多。
不过一般的默认规则是,能用表连接的话尽量用表连接代替子查询,尤其是多表查询的时候。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2