Estoy usando SQL SERVER 2008 R2
Acabo de encontrar APLICAR en SQL y me encantó cómo resuelve los problemas de consulta en tantos casos,
Muchas de las tablas que estaba usando 2 left join para obtener el resultado, pude obtener 1 aplicación externa.
Tengo una pequeña cantidad de datos en mis tablas de bases de datos locales y, después de la implementación, se supone que el código se ejecuta en datos al menos 20 veces más grandes.
Me preocupa que la aplicación externa pueda llevar más tiempo que las 2 condiciones de unión restantes para una gran cantidad de datos,
¿Alguien puede decir cómo funciona exactamente aplicar y cómo afectará el rendimiento en datos muy grandes? Si es posible, algunas relaciones proporcionales con el tamaño de cada tabla son proporcionales a n1 ^ 1 o n1 ^ 2 ... donde n1 es el número de filas en la tabla 1)
Aquí está la consulta con 2 combinación izquierda
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
Aquí está la consulta con aplicación externa
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
fuente