内连接外连接子查询效率比较,请高手指点
大家好,我想问一个查询效率的问题,关于内联外联和子查询那个效率高
数据库
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应该更快。