首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

内连接外连接子查询效率比较,请

2013-09-06 
内连接外连接子查询效率比较,请高手指点大家好,我想问一个查询效率的问题,关于内联外联和子查询那个效率高

内连接外连接子查询效率比较,请高手指点
大家好,我想问一个查询效率的问题,关于内联外联和子查询那个效率高

数据库 

A表

idname
1小白
2小红
3小黑

B表

idpidtype
11S
21S
31L
42L
52L
63S

其中 Pid 是外键

现在要查询小白的每个类型多少个

SELECT Name,
(SELECT count(*) from B where B.pid=A.id and B.type = 'S') as 总S,
(SELECT count(*) from B where B.pid=A.id and B.type = 'L') as 总L 
from A where A.Name = '小白' 

这个是子查询,然后下面用的内连接

SELECT A.[name],
(CASE WHEN B.[type] = 'S' THEN count(B.[type]) end) AS 总S,
(CASE WHEN B.[type] = 'L' THEN count(B.[type]) end) AS 总L
FROM A inner join B on A.id=B.pid WHERE A.[name] = '小白' 
GROUP BY A.[name],B.[type]

请问这俩种哪个查询效率高,一般情况下应该用子查询还是内联查询? 数据库
[解决办法]
一般用内连接, lz可以使用ctrl+L 查看执行计划。


[解决办法]
物理读取,是从磁盘读取到内存中,
逻辑读取,是查询执行器通过访问方法尝试读取的次数。
[解决办法]
像你这个,联接后使用group by应该更快。

热点排行