Tôi đang sử dụng SQL SERVER 2008 R2
Tôi mới bắt gặp ỨNG DỤNG trong SQL và thích cách nó giải quyết các vấn đề truy vấn cho rất nhiều trường hợp,
Nhiều bảng tôi đang sử dụng 2 liên kết trái để có kết quả, tôi đã có thể nhận được trong 1 lần áp dụng bên ngoài.
Tôi có một lượng nhỏ dữ liệu trong các bảng DB cục bộ của mình và sau khi triển khai, mã được cho là chạy trên dữ liệu ít nhất gấp 20 lần.
Tôi lo ngại rằng việc áp dụng bên ngoài có thể mất nhiều thời gian hơn 2 điều kiện tham gia bên trái đối với lượng dữ liệu lớn,
Bất cứ ai cũng có thể cho biết cách áp dụng chính xác hoạt động như thế nào và nó sẽ ảnh hưởng đến hiệu suất trong dữ liệu rất lớn như thế nào. 1.
Đây là truy vấn với 2 bên trái tham gia
select EC.*,DPD.* from Table1 eC left join
(
select member_id,parent_gid,child_gid,LOB,group_gid,MAX(table2_sid) mdsid from Table2
group by member_id,parent_gid,child_gid,LOB,group_gid
) DPD2 on DPD2.parent_gid = Ec.parent_gid
AND DPD2.child_gid = EC.child_gid
AND DPD2.member_id = EC.member_id
AND DPD2.LOB = EC.default_lob
AND DPD2.group_gid = EC.group_gid
left join
Table2 dpd on dpd.parent_gid = dpd2.parent_gid
and dpd.child_gid = dpd2.child_gid
and dpd.member_id = dpd2.member_id
and dpd.group_gid = dpd2.group_gid
and dpd.LOB = dpd2.LOB
and dpd.table2_sid = dpd2.mdsid
Đây là truy vấn với áp dụng bên ngoài
select * from Table1 ec
OUTER APPLY (
select top 1 grace_begin_date,retroactive_begin_date,Isretroactive
from Table2 DPD
where DPD.parent_gid = Ec.parent_gid
AND DPD.child_gid = EC.child_gid
AND DPD.member_id = EC.member_id
AND DPD.LOB = EC.default_lob
AND DPD.group_gid = EC.group_gid
order by DPD.table2_sid desc
) DPD