假设有如下情况:
1、数据库为Oracle和MS SQLServer两种可能
2、有A、B、C 共3张表
3、其中A.id=B.a_id,B.id=C.b_id(其中A.id,B.id均为varchar[20])
4、A和B是1对多,B和C是1对多的关系
5、A表约有400万行,B表约有500万行,C表约有1200万行数据
6、A.id,B.id,C.id为主键
7、B.a_id,C.b_id上有普通索引目标:
要取得如下字段的值
A.id,A.field2,A.field3,A.field4,
B.id,B.field2,B.field3,B.field4,
C.id,C.field2,C.field3,C.field4
假设数据库中A.id='100203914'的记录(结果集不会超过50条)现在有2种查询方法:
1、直接进行关联查询
select
A.id,A.field2,A.field3,A.field4,
B.id,B.field2,B.field3,B.field4,
C.id,C.field2,C.field3,C.field4
from A,B,C where A.id=B.a_id and B.id=C.b_id
and A.id='100203914'2、分开查询
a. select A.id,A.field2,A.field3,A.field4 where A.id='100203914';
b. select B.id,B.field2,B.field3,B.field4 where B.a_id='100203914';
c. select C.id,C.field2,C.field3,C.field4 where C.b_id in (步骤b的结果);上面2种,在什么情况下哪种执行效率高?